2011-02-14 157 views
0

我遇到以下问题。我想在PHP中比较两个日期时间值,但计算无效。大约有8个小时的不同。我为我的开发机器上使用WAMPServerPHP比较日期时间

if(strtotime($date_time_from_db) < time()) 
{ 
    // do something 
} 

在数据库中的日期时间值的格式如下:Y-M-d H:我:秒。我如何准确地做到这一点?另外,使用time()是一个好主意?如果用户改变他们机器上的时间会发生什么?

非常感谢!

+0

你能显示一些实际值吗?区别可能是时区 – 2011-02-14 19:42:41

+0

我建议在数据库中使用时间戳,但那只是我。另外,用户在其计算机上更改时间并不重要,因为time()是从托管脚本的机器调用的。另一方面,如果机器的时间发生了变化,那么就会冒着时间不匹配的风险。 – 2011-02-14 19:43:45

回答

2

如果您要从数据库中提取这些值,请不要在PHP中进行日期/时间比较。这涉及到转换的双向往返:日期/时间 - >文本 - >日期 - 时间。您可以在数据库级别做同样的事情:

SELECT ... 
FROM table 
WHERE datetimefield < now() 

允许使用索引(好)和排除了两个类型转换(也不错)。

至于用户改变时间 - 好吧,那只是用户的机器。除非您将其作为销售应用程序的一部分,否则用户绝对不会影响数据库服务器上的时间。