我正在开发在线购物系统。只有英国客户才能从网站下订单。
我想知道哪种方法适合我?
date_default_timezone_set( “欧洲/伦敦”); $ time = time();
或
现在使用mysql函数()?
有时客户可以选择交货或收货的时间。
注意:在英国,我们每年更换两次时间!
答案 0 :(得分:5)
如果要将时间发送到数据库,请使用NOW();更少的开销,并且希望服务器时区总是正确的,并且比PHP的时区更不可变。如果我们只是在谈论显示,而不是实际上在做数据库工作,那么仅仅为了节省时间而运行mysql查询就太过分了。
答案 1 :(得分:2)
在PHP中,我通常会执行以下操作:
date_default_timezone_set('GMT');
然后,在连接到MySQL服务器时,我执行以下查询:
'SET time_zone = "' . date_default_timezone_get() . '";'
这确保PHP和MySQL都使用相同的时区,因此NOW()
和date('Y-m-d H:i:s')
都应该产生相同的结果。
关于日光变化,它们应该不是问题(如果您更新了软件)。
答案 2 :(得分:1)
在这个问题中,一个重要的考虑因素是PHP和MySQL之间的时间是否相同?
如果两个人在同一台机器上运行,那么答案可能是“是”,但如果他们在不同的机器上,那么他们很可能实际上是不同的。
考虑使用MySQL NOW()
函数将日期写入数据库的情况,并且单独地查询要求在过去24小时内完成的所有条目,使用PHP日期在查询中构建时间功能。如果PHP服务器上的时间与SQL服务器不同步,则可能会丢失报告中的记录(或者连续几天将它们加倍,具体取决于它们的不同步方式) 。这可能会导致错过交货等等。
这样做的结果是你应该小心使用日期(特别是日期时间)。使用PHP或MySQL日期功能并不重要,但您应该尝试使用相同的平台进行查询,而不是像以前那样进行查询。
当然,它并不总是以这种方式变得至关重要,你可以对它采取务实态度 - 有时回到数据库太不方便了,只是为了找出时间是什么!但是当它很重要时,你应该小心。
当然,如果这两个系统位于同一台服务器上,这不是问题,但你不应该认为这种情况总是如此。