【发布时间】:2021-08-01 15:24:27
【问题描述】:
我想得到第二天@给定日期的午夜。 到目前为止,我正在使用:
givenDate.Add(time.Hour * time.Duration(24))
问题在于如果我添加 24 小时,我会在同一天停留在某些时区。在法国,他们不时改变时间。
使用以下添加一天是否安全?
time.Date(givenDate.Year(), givenDate.Month(), givenDate.Day()+1, 0, 0, 0, 0, loc)
loc 在给定示例中为 time.UTC。
【问题讨论】:
-
你能比“它安全吗”更具体一些吗?您对这种方法有什么疑问?你测试过吗?
-
我认为您需要考虑的唯一边缘情况是,有些时间实际上从未发生过,有些时间发生了两次(夏令时轮班时间为 1 小时)。据我所知,所有转换的语言都在凌晨 2 点这样做,所以如果你只是对午夜感兴趣,那么这应该不是问题。
-
很高兴了解凌晨 2 点的经验法则。 @HymnsForDisco 是的,我可以澄清一下。我想知道使用 time.Date(2020, 10, 40) 创建日期是否是一种可靠的创建日期的方法,例如,该月的所有额外天数仍将添加到日期中。我做了一些测试,它似乎适用于我的用例。