基于用户当地时间而非GMT时间(包括夏令时支持)的查询表



如果用户希望根据当地时区的一小时触发通知或某些活动。您可以将每个用户喜欢的通知时间存储在数据库中,并且只需每小时轮询一次表以确定谁想要通知。但这不会考虑夏令时。这通常是如何解决的?

假设用户请求东部时间上午9点:

  1. 如果将美国东部时间上午9点转换为GMT,并将GMT小时存储在数据库中。这不起作用,因为GMT转换只在夏令时之前有效。

  2. 如果您将美国东部时间上午9点直接存储在表中,那么您必须查询表中的每一行,包括它们的时区,并计算每一行中的当前时间。

选项2有效,但仅适用于小型数据库。最好的方法是什么?

一个选项是将小时存储在GMT中,这样您就可以将表分批/分段为上午9点、上午10点等。

然后,每次发出通知时,都会重新计算明天的时间,这样夏令时的前一天不仅会发送通知,还会更新时间,为明天做准备。

这个解决方案的唯一问题是,如果你有一个大的细分市场(即美国(,那么在一年中的某些日子会发生大规模更新。

最新更新