无论时区如何设置日期?

时间:2014-03-07 08:59:32

标签: php mysql sql-server date datetime

我需要根据创建日期查询记录。比如说,我必须查询在两个日期2012-03-01 00:00:002012-03-03 23:59:00之间创建的记录。我在查询中使用次数,如

$from_date = '01/03/2012';
$to_date = '03/03/2012';
$from = date('Y-m-d 00:00:00', strtotime($from_date));
$to = date('Y-m-d 23:59:00', strtotime($to_date));

查询在localhost中工作正常,因为我的国家/地区有我的数据库。但它在实时网站上运行不正常。由于时区不同,因此创建的日期会自动更改为

$from = 2012-03-01 17:00:00
$to = 2012-03-03 16:59:00

即,它会改变到它的时区。我尝试将日期转换为该时区。但它没有用。现在,我该怎样做才能为查询提供正确的时间?

3 个答案:

答案 0 :(得分:2)

在调用date(...)方法之前,您应该致电date_default_timezone_set

值得注意的是,自PHP 5.1.0开始,如果时区无效,则每次调用日期/时间函数都会生成E_NOTICE,如果使用系统设置或TZ环境变量,则会生成E_WARNING消息,所以值得看看你的错误...

答案 1 :(得分:2)

我认为这是你需要做的事情

$from_date = '01/03/2012';
$to_date = '03/03/2012';
$from = date('Y-m-d H:i:s', strtotime($from_date." 00:00:00"));
$to = date('Y-m-d H:i:s', strtotime($to_date." 23:59:00"));

答案 2 :(得分:1)

上面的答案是正确的,但我想就你的问题给出不同的观点。由于您只对正常的日期而不是小时感兴趣,因此您可以使用日期$from_date$to_date直接在sql查询中格式化存储在db中的日期,如下所示:

DATE_FORMAT(column_with_date,'%d/%m/%Y')