我有一个存储在数据库中的日期.日期是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),一切都是相同的,但是我的时区错误.
谁有线索给我?