碳日期对比错了1小时
Carbon date comparison wrong by 1 hour
所以,这对我来说似乎不对。当比较具有相同时区且仅相差一分钟的两个日期时,它告诉我相差 59 分钟。
date_default_timezone_set('America/New_York');
$stored_time = "2020-03-10 07:37:37 PM EST"; //Aprox 1 minute before Carbon::now()
$stored_time = Carbon::createFromFormat('Y-m-d h:i:s A T', $stored_time, 'EST');
echo $stored_time . "\n";
echo Carbon::now() . "\n";
$minutes_difference = Carbon::now()->diffInMinutes($stored_time);
echo $minutes_difference;
我目前正在使用下面的解决方法,但这对我来说意义不大。此外,当我回显 $stored_time
和 Carbon::now()
时,它不会 显示 小时差异,除非使用 diffInMinutes()
方法
$stored_time = Carbon::createFromFormat('Y-m-d h:i:s A T', $stored_time, 'EST')->subHour(1);
编辑:将 stored_time 调整为“2020-03-10 09:27:37 PM EST”(在我 运行 脚本之前大约 3 分钟)这是输出:
stored_time: 2020-03-10 21:27:37
Carbon::now():2020-03-10 21:30:00
time(): 1583890200
minutes_difference: 57
如果您在代码中始终使用相同的 America/New_York
时区,您将获得预期的结果。
date_default_timezone_set('America/New_York');
$stored_time = "2020-03-11 12:25:00 AM America/New_York";
$stored_time = Carbon\Carbon::createFromFormat('Y-m-d h:i:s A T', $stored_time, 'America/New_York');
echo $stored_time . "\n";
echo Carbon\Carbon::now() . "\n";
$minutes_difference = Carbon\Carbon::now()->diffInMinutes($stored_time);
echo $minutes_difference;
输出:
2020-03-11 00:25:37
2020-03-11 00:24:58
0
使用人类可读的时区会导致问题;最好坚持计算机最能识别的内容。
所以,这对我来说似乎不对。当比较具有相同时区且仅相差一分钟的两个日期时,它告诉我相差 59 分钟。
date_default_timezone_set('America/New_York');
$stored_time = "2020-03-10 07:37:37 PM EST"; //Aprox 1 minute before Carbon::now()
$stored_time = Carbon::createFromFormat('Y-m-d h:i:s A T', $stored_time, 'EST');
echo $stored_time . "\n";
echo Carbon::now() . "\n";
$minutes_difference = Carbon::now()->diffInMinutes($stored_time);
echo $minutes_difference;
我目前正在使用下面的解决方法,但这对我来说意义不大。此外,当我回显 $stored_time
和 Carbon::now()
时,它不会 显示 小时差异,除非使用 diffInMinutes()
方法
$stored_time = Carbon::createFromFormat('Y-m-d h:i:s A T', $stored_time, 'EST')->subHour(1);
编辑:将 stored_time 调整为“2020-03-10 09:27:37 PM EST”(在我 运行 脚本之前大约 3 分钟)这是输出:
stored_time: 2020-03-10 21:27:37
Carbon::now():2020-03-10 21:30:00
time(): 1583890200
minutes_difference: 57
如果您在代码中始终使用相同的 America/New_York
时区,您将获得预期的结果。
date_default_timezone_set('America/New_York');
$stored_time = "2020-03-11 12:25:00 AM America/New_York";
$stored_time = Carbon\Carbon::createFromFormat('Y-m-d h:i:s A T', $stored_time, 'America/New_York');
echo $stored_time . "\n";
echo Carbon\Carbon::now() . "\n";
$minutes_difference = Carbon\Carbon::now()->diffInMinutes($stored_time);
echo $minutes_difference;
输出:
2020-03-11 00:25:37
2020-03-11 00:24:58
0
使用人类可读的时区会导致问题;最好坚持计算机最能识别的内容。