大佬教程收集整理的这篇文章主要介绍了为什么日期在 1900 年之前时间包有不同的行为?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试使用 golang 的时间包从 sql 服务器格式化一些带有时区的日期,但发现:
package main
import (
"time"
"fmt"
)
func main() {
loc,_ := time.LoadLOCATIOn("Asia/Shanghai")
endTime1 := time.Date(1,1,17,23,59,999*int(time.Millisecond),loC)
fmt.Printf("format String 1 : %s\n",endTime1.UTC().Format("2006-01-02T15:04:05.000Z"))
endTime2 := time.Date(2021,loC)
fmt.Printf("format String 2 : %s\n",endTime2.UTC().Format("2006-01-02T15:04:05.000Z"))
}
# output
format String 1 : 0001-01-17T15:54:16.999Z
format String 2 : 2021-01-17T15:59:59.999Z
输出的“HH:mm:ss”部分不同。我终于找到了关键时间是1900-12-31,但是从源代码和网上都没有找到那天的线索。
似乎与上海时区有关。
您可以从 this page 阅读
1901 年 1 月 1 日 - 时区更改(LMT → CST) 当当地标准时间即将到达时 1901 年 1 月 1 日,星期二,00:00:00 时钟倒退 0:05:43 小时 1900 年 12 月 31 日星期一,当地时间 23:54:17。
我们还可以在 go docs
中找到更多信息夏令时过渡会跳过或重复时间。例如,在美国,2011 年 3 月 13 日凌晨 2:15 从未发生过,而 2011 年 11 月 6 日凌晨 1:15 发生了两次。在这种情况下,时区的选择以及时间的选择并不明确。 Date 返回的时间在转换所涉及的两个区域之一中是正确的,但不能保证是哪个。
@H_801_27@以上是大佬教程为你收集整理的为什么日期在 1900 年之前时间包有不同的行为?全部内容,希望文章能够帮你解决为什么日期在 1900 年之前时间包有不同的行为?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。