程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么日期在 1900 年之前时间包有不同的行为?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么日期在 1900 年之前时间包有不同的行为??

开发过程中遇到为什么日期在 1900 年之前时间包有不同的行为?的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么日期在 1900 年之前时间包有不同的行为?的解决方法建议,希望对你解决为什么日期在 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@
@H_801_27@

大佬总结

以上是大佬教程为你收集整理的为什么日期在 1900 年之前时间包有不同的行为?全部内容,希望文章能够帮你解决为什么日期在 1900 年之前时间包有不同的行为?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。