我有一个时间数组
[2023,1,3,17,0,0]
当我在javascript中使用Date.UTC时,它产生了正确的结果
我的代码
const utcDate1 = new Date(Date.UTC(2023, 1, 3, 17,0,0));
console.log(utcDate1.toUTCString());
结果:
"Fri, 03 Feb 2023 17:00:00 GMT"
如何在php中得到与javascript相同的结果?我尝试在php中使用mktime
,但是返回的结果不是我所期望的。它相差一个月。
验证码:
echo date("d-m-Y H:i:s", mktime(17,0,0,1,3,2023));
PHP的结果:
03-01-2023 17:00:00
1条答案
按热度按时间ctzwtxfj1#
Javascript使用日期格式存储月份0开始:月份“0”表示1月。
PHP没有,php认为一月是月1。
这就是为什么在js中
Date.UTC(2023, 1, 3, 17,0,0)
表示2月3日,而在php中mktime(17,0,0,1,3,2023)
表示1月3日。当在php中使用js风格的日期输入
[2023,1,3,17,0,0]
时,你必须将月份值加1。如果你的系统的这一部分是在你的控制之下,并且你有可能改变你用来在js和php之间交换日期值的格式,我强烈建议使用两个系统都能理解的格式,例如ISO 8601或unix时间戳。