Php 如何设置日期而不考虑时区?

Php 如何设置日期而不考虑时区?,php,mysql,sql-server,date,datetime,Php,Mysql,Sql Server,Date,Datetime,我需要根据记录的创建日期查询记录。例如,我必须查询在两个日期之间创建的记录2012-03-01 00:00:00到2012-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)); 查询

我需要根据记录的创建日期查询记录。例如,我必须查询在两个日期之间创建的记录
2012-03-01 00:00:00
2012-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
也就是说,它会改变时区。我试着把日期转换成那个时区。但它不起作用。现在,我可以做些什么来为查询提供正确的时间?

您应该在调用
日期(…)
方法之前调用

值得注意的是,自PHP5.1.0以来,如果时区无效,则每次调用日期/时间函数都会生成一条E_通知,如果使用系统设置或TZ环境变量,则会生成一条E_警告消息,因此值得查看错误…

您应该在调用
日期(…)
方法之前进行调用


值得注意的是,自PHP 5.1.0以来,如果时区无效,则每次调用日期/时间函数都会生成一条E_通知,如果使用系统设置或TZ环境变量,则会生成一条E_警告消息,因此值得查看您的错误…

我认为这就是您需要做的

$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"));

我想这就是你需要做的

$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"));

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

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

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

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

或者,如果可能的话,只需在服务器配置中设置!很好的一点@Michael-链接的文档确实提到了ini文件中的设置我同意@RowlandShaw您应该在
date()
之前调用
date\u default\u timezone\u set()
,或者在服务器配置中设置(如果可能的话)!很好的一点@Michael-链接的文档确实提到ini文件中的设置我同意@RowlandShaw您应该在
date()之前调用
date\u default\u timezone\u set()