代码之家  ›  专栏  ›  技术社区  ›  John Feminella

给定一个UTC时间的日期,我如何知道它当前是否与世界上其他任何地方的同一天?

  •  2
  • John Feminella  · 技术社区  · 15 年前

    假设我有一个特定的UTC 时间 T . 我想一个方法,如果它是可能的,至少有一个地点在地球上其他地方有相同的返回真 作为 T型

    def still_same_date?(t)
      # true
      #   if it is the same day at some other place on Earth
      # false
      #   otherwise
    end
    

    比如说 T型

    但如果 T型 在我当地时间昨天下午4点,地球上还有另一个地方仍然有那个日期,这显然不再是真的。

    如果 T型

    我怎么写 still_same_date?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Jon Skeet    15 年前

    好吧,为了澄清这一点,你实际上有两条信息:

    • UTC瞬间

    你想看看在给定的UTC时刻,是否有任何时区使得日期是给定的。请注意,你在问题中所说的“今天”并没有给出日期的唯一值(由于时区不同,我的“今天”可能与你的不同),这就是为什么我用带有两个参数的函数来明确表达它的原因。

    基本上,你需要迭代。伪代码:

    for each time zone tz
      localTime = tz.GetLocalTime(utc)
      if (localTime.GetDate() == targetDate)
        return true
    
    return false
    

    现在你可以通过找到最大和最小的时区偏移量来优化它,这会给你一个“真实”的结果,并应用边界。我不记得有史以来最大和最小的偏移量是什么,但我会的 如果您需要大于+15或小于-15,可以立即返回false。

    在历史的某个时刻 .

        2
  •  2
  •   David Moye    15 年前

    基本上,如果日期时间.UtcNow从UTC日期起+/-12小时,您应该返回true。。。如果我没听错的话。

    推荐文章