为了账号安全,请及时绑定邮箱和手机立即绑定

时间中的奇怪行为。 Go 中的 Parse 函数

时间中的奇怪行为。 Go 中的 Parse 函数

Go
明月笑刀无情 2021-06-02 17:47:32
当您执行以下代码片段时,该代码片段主要来自Go 的时间包文档及其 Parse 函数示例:package mainimport (   "time"   "fmt")var shortForm = "2006-Jan-02"t, _ := time.Parse(shortForm, "2013-Feb-03")fmt.Println(t)然后,您可以2013-02-03 00:00:00 +0000 UTC在控制台中获得正确的结果。但是,当您shortForm稍微更改值时,例如2007-Jan-02,2006-Feb-02, 或2006-Jan-01,它输出错误的结果,并且输出看起来甚至不规则,例如0001-01-01 00:00:00 +0000 UTC,2013-03-01 00:00:00 +0000 UTC, 或2013-01-03 00:00:00 +0000 UTC。那么为什么这个函数的行为如此奇怪呢?我该如何处理?每次使用该函数时,我是否应该始终将布局变量定义为2006-Jan-02?谢谢。
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

time.Parsetime.Format功能使用的数字在布局参数来标识哪个日期分量称为:

  • 1:月(或者可以出现在单词中JanJanuary

  • 2: 日

  • 3: 小时(或者1524 小时制)

  • 4: 分钟

  • 5: 第二

  • 6: 年份(也可以2006是 4 位数年份)

  • 7:时区(或者MST时区代码)。

因此,当您将布局字符串从 更改2006-Jan-02为 时2006-Jan-01,您是在说月份在时间字符串中出现了两次,从而导致了意想不到的结果。


查看完整回答
反对 回复 2021-06-28
  • 1 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信