如果用户希望根据当地时区的一小时触发通知或某些活动。您可以将每个用户喜欢的通知时间存储在数据库中,并且只需每小时轮询一次表以确定谁想要通知。但这不会考虑夏令时。这通常是如何解决的?
假设用户请求东部时间上午9点:
-
如果将美国东部时间上午9点转换为GMT,并将GMT小时存储在数据库中。这不起作用,因为GMT转换只在夏令时之前有效。
-
如果您将美国东部时间上午9点直接存储在表中,那么您必须查询表中的每一行,包括它们的时区,并计算每一行中的当前时间。
选项2有效,但仅适用于小型数据库。最好的方法是什么?
一个选项是将小时存储在GMT中,这样您就可以将表分批/分段为上午9点、上午10点等。
然后,每次发出通知时,都会重新计算明天的时间,这样夏令时的前一天不仅会发送通知,还会更新时间,为明天做准备。
这个解决方案的唯一问题是,如果你有一个大的细分市场(即美国(,那么在一年中的某些日子会发生大规模更新。