与国际时区和国际时区合作的一个简单问题GMT。
我有一个应用程序需要在特定时间(早上6点)为每个国际人士根据他们的时间/区域GMT +发送电子邮件。我不知道如何处理GMT&时区。任何输入都表示赞赏。
答案 0 :(得分:1)
您可以使用php 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来检查每个小时。