用PHP传递国际时间

时间:2011-12-20 17:02:16

标签: php timezone gmt

与国际时区和国际时区合作的一个简单问题GMT。

我有一个应用程序需要在特定时间(早上6点)为每个国际人士根据他们的时间/区域GMT +发送电子邮件。我不知道如何处理GMT&时区。任何输入都表示赞赏。

3 个答案:

答案 0 :(得分:1)

您可以使用php timezone set功能,如下所示

date_default_timezone_set( '美洲/洛杉矶');

使用此功能可以获得用户的时间。基于此,您可以发送电子邮件。

更多参考date_default_timezone_set

答案 1 :(得分:1)

天真地,您可以为每个用户收集(或somehow determine)时区ID(tzid),并在每个UTC小时的顶部运行一个cron作业,检查当前是否有任何一个区域的时间是06:00。

但这并不容易,因为有几个时区没有UTC的全时偏移,例如America / St_Johns(UTC-03:30)和Asia / Kathmandu(UTC + 05:45) ),如果你每小时只运行一次cron,这些用户就不会收到任何电子邮件。因此,您可能希望每隔四分之一小时运行一次cron,以确保安全。

但是,由于cron作业通常在 之后启动几秒钟,因此它们计划运行,因此您不应该在06:00:00测试 equality 。此外,时区不 以四分之一小时为增量(但幸运的是,所有公认的区域都是),所以为了迂腐,你可能想要评估当前时间是否属于某个窗口。

例如,如果您每15分钟运行一次cron,请将该窗口设置为15分钟(例如, 05:55至06:10),以确保抓住边缘情况。仍有理论机会可以跳过cron运行...但是没有存储额外的数据,表明某人是否还没有被发送到今天的电子邮件(如果他们没有,则补足差异),这是最好的你能做到。

答案 2 :(得分:0)

如果你的一个用户存在于早上6点的某个地方,你可以运行一个cron来检查每个小时。