我有一个网站,其中有许多来自不同国家的用户。用户可以根据他们的时区安排任务。现在每分钟后服务器上都会运行一个 cron,该 cron 会执行一个脚本,检查是否有任何用户的任何计划任务,如果有,它是否需要。
由于我的服务器位于美国,因此 cron 执行的脚本会考虑美国的时区。我必须在我的脚本中做什么才能根据用户的时区而不是服务器的时区来执行用户的任务?
提前感谢您的任何想法
我有一个网站,其中有许多来自不同国家的用户。用户可以根据他们的时区安排任务。现在每分钟后服务器上都会运行一个 cron,该 cron 会执行一个脚本,检查是否有任何用户的任何计划任务,如果有,它是否需要。
由于我的服务器位于美国,因此 cron 执行的脚本会考虑美国的时区。我必须在我的脚本中做什么才能根据用户的时区而不是服务器的时区来执行用户的任务?
提前感谢您的任何想法
查找用户的时区。
计算用户时区的当前时间。
对于每个作业,查找上次运行的时间并计算下一次应该运行的时间。
对于下一次运行时间是现在或过去的任何作业,运行该作业并更新每个作业最后一次运行的记录。
几个月前我在 iPhone 上做了类似的事情。
我的解决方案是将时间捕获为字符串。因此,如果用户选择上午 8 点,我将捕获 08:00 和他们的时区,例如欧洲/伦敦。
在我的服务器上每隔 5 分钟左右,我就可以根据时区将此 08:00 转换为当前的 UTC 时间。如果这个时间是“存在的”,我会检查用户的运输状态并发出警报。
为了帮助我处理时区,我使用了 NodaTime。http://noda-time.blogspot.co.uk/