fwrite php time unixtimestamp_在PHP中使用strtotime()和在MySQL中使用UNIX_TIMESTAMP()时使用不同的时间戳...

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

谁有线索给我?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值