【发布时间】:2010-08-16 13:38:16
【问题描述】:
我一直试图在 PHP 中将当前时间四舍五入到较低的小时。
这是我想做的:
1.取当前时间:
$time_now = time();
2.四舍五入到最接近的时间:
$time_now = $time_now - ($time_now % 3600);
3.使用日期功能打印:
print date('d m Y H:i', $time_test);
但似乎正在发生的是打印时间是我想要的 + 30 分钟。 例如:如果当前时间是 19:03,我会得到 18:30 而不是 19:00 的输出 如果时间是 19:34,我得到的输出是 19:30 而不是 19:00
这快把我逼疯了! X( 这段代码似乎有什么问题?!也许与时区有关?我的系统时间是 GMT +5:30
【问题讨论】:
-
你回显 $time_test 但之前在代码中是 $time_now?
-
它的接缝是时区。在我的本地环境(格林威治标准时间 +2:00)上对其进行了测试,并且全小时返回
-
date_default_timezone_get()返回什么? -
$time_test 这里是一个错字我的时区是 +5:30 date('P') 给了我这个。而且我也认为这是罪魁祸首,因为我的模运算符返回的 no 比应该正确的多 30*60 秒。
-
您的问题肯定与时区有关 - 在您发现问题所在时很有用。我想您应该在执行减法的同一表达式中添加您的时区的分钟部分所暗示的秒数。对于具有整数偏移量的时区中的大多数世界,这是一个无操作(加 0);对于印度(或尼泊尔、不丹或纽芬兰)的人们来说,这将改变世界。