我有一个存储在数据库中的日期.日期是2017-03-01.该字段是“日期”字段.
我用的时候
DATE_FORMAT(orderdate,'%d.%m.%Y') as mydate
在我的MysqL-Query中,显示“01.03.2017”.
我用的时候
UNIX_TIMESTAMP(orderdate) as mydate
并输出日期(‘d.m.Y’,$mydate)
结果我得到28.02.2017.
这是“二月问题”吗?我怎样才能让date()做得对?
—————–编辑1 —————–
我之前已将它放在我的代码中.
# set timezone date_default_timezone_set('Europe/Vienna'); # daylight-saving time if(date('I') < 1){ MysqLi_query($db,"SET time_zone = '+01:00'"); }else{ MysqLi_query($db,"SET time_zone = '+02:00'"); }
—————–编辑2 —————–
好的,我用这个内容生成了一个MysqL表(字段类型:“日期”):
xdate 2017-01-01 2017-01-15 2017-01-31 2017-02-01 2017-02-15 2017-02-28 2017-03-01 2017-03-15 2017-03-31 2017-04-01 2017-04-15 2017-04-30 2017-05-01 2017-05-15 2017-05-31 2017-06-01 2017-06-15
Current Time 2017-06-16 02:31:08 PHP-Time 2017-06-16 02:31:08 MysqL-Time Col 1 Col 2 Col 3 Col 4 Col 5 Col 6 1483221600 2016-12-31 1483225200 2017-01-01 2017-01-01 2017-01-01 1484431200 2017-01-14 1484434800 2017-01-15 2017-01-15 2017-01-15 1485813600 2017-01-30 1485817200 2017-01-31 2017-01-31 2017-01-31 1485900000 2017-01-31 1485903600 2017-02-01 2017-02-01 2017-02-01 1487109600 2017-02-14 1487113200 2017-02-15 2017-02-15 2017-02-15 1488232800 2017-02-27 1488236400 2017-02-28 2017-02-28 2017-02-28 1488319200 2017-02-28 1488322800 2017-03-01 2017-03-01 2017-03-01 1489528800 2017-03-14 1489532400 2017-03-15 2017-03-15 2017-03-15 1490911200 2017-03-31 1490911200 2017-03-31 2017-03-31 2017-03-31 1490997600 2017-04-01 1490997600 2017-04-01 2017-04-01 2017-04-01 1492207200 2017-04-15 1492207200 2017-04-15 2017-04-15 2017-04-15 1493503200 2017-04-30 1493503200 2017-04-30 2017-04-30 2017-04-30 1493589600 2017-05-01 1493589600 2017-05-01 2017-05-01 2017-05-01 1494799200 2017-05-15 1494799200 2017-05-15 2017-05-15 2017-05-15 1496181600 2017-05-31 1496181600 2017-05-31 2017-05-31 2017-05-31 1496268000 2017-06-01 1496268000 2017-06-01 2017-06-01 2017-06-01 1497477600 2017-06-15 1497477600 2017-06-15 2017-06-15 2017-06-15
当前时间与计算机上显示的时间相同.所以这是正确的时间,时间设置似乎没问题. “当前时间”由date()生成 – PHP中的函数和NOW()的MysqL.
Col 1是MysqL-Query的UNIX_TIMESTAMP.
第2列是使用PHP-Date-Function和Col 1生成的日期.
Col 3是strtotime()的Unix时间戳.
Col 4是使用PHP-Date-Function和Col 3生成的日期.
第5栏是使用DATE_FORMAT格式化的日期(xdate,’%Y-%m-%d’).
第6列是直接来自数据库的日期.
正如您所看到的,前八个行是错误的,由date() – 函数(第二列)计算得到了MysqL-Query的(错误的?)UNIX_TIMESTAMP():
date('d.m.Y',$mydate)
如果我更换线路,我测试了会发生什么
MysqLi_query($db,"SET time_zone = '+02:00'");
同
MysqLi_query($db,"SET time_zone = '+01:00'");
date-Function返回正确的Date,但是在NOW中的NOW()提供了错误的时间.
当我从脚本中删除带有“设置”的部分时(参见编辑1),一切都是相同的,但是我的时区错误.
谁有线索给我?