我在php中计算时间有问题。这是一个简单的脚本:当给出一个时间(datenow)时,函数ordertime会评估:
我的服务器上有php 4.4.9,date_default_timezone_set不起作用,所以我必须使用gmdate并计算偏移量。当我放完整个脚本时,它会在前一天输出(它使用的是不是我当前时区的servertime)。这是代码。谢谢你的帮助。
<?php
$gmt = -3;
$datenow = gmdate("d-m-Y H:i:s", mktime(date("H")+ $gmt, date("i"), date("s"), date("m"), date("d"), date("Y")));
$date = strtotime($datenow);
function ordertime ($when)
{
global $date ;
$datearray = strtotime($when);
if ($datearray['hours'] < 10) {
// order ships today
return strtotime("today 12:30");
}
elseif ($datearray['hours'] < 14) {
// we can't take this order
echo "we can't take this order";
} else {
// order ships tomorrow
return strtotime("tomorrow 12:30");
}
}
// date_default_timezone_set("America/Argentina/Buenos_Aires"); // this does not work on php4.4.9
$delivery = ordertime($date);
if ($delivery) {
$deliverytime = strftime("%d-%m-%Y %H:%M:%S", $delivery);
echo $datenow."<br />";
echo $deliverytime;
}?>
这给了我这个输出
OUTPUT
25-02-2012 03:46:22
24-02-2030 12:30:00
我已经完成了Kolink建议的所有修正。我删除了return strtotime
中的第二个参数,因为它为我提供了05-08-2030 12:30:00
的输出。如果我删除getdate,我在php5中有相同的输出。
答案 0 :(得分:0)
尝试将$datenow
作为第二个参数传递给strtotime()
。这应该使“今天”或“明天”相对于正确的时间,并解决您的问题。