全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何使用Golang格式化日期时间_Golang time Format与Parse方法解析

Go语言时间格式化与解析基于参考时间“Mon Jan 2 15:04:05 MST 2006”,time.Format将time.Time转字符串,time.Parse将字符串转time.Time,二者均需严格匹配该参考时间风格的layout,不可用yyyy-MM-dd等其他格式。

Go语言中格式化和解析时间,核心是 time.Formattime.Parse 方法,它们不使用常见的 yyyy-MM-dd HH:mm:ss 这类模板,而是基于 Go 的“参考时间”(Reference Time)——Mon Jan 2 15:04:05 MST 2006。这个固定时间点的每个字段都对应一个特定值,用它来定义格式模板。

为什么用 "Mon Jan 2 15:04:05 MST 2006"?

这是 Go 官方选定的“参考时间”,因为它的年月日时分秒时区全部非零且具代表性,且按美式习惯排列。Go 用这个时间的字面值作为格式占位符:

  • 2006 → 年(4位)
  • Jan → 英文缩写月份(如 Jan、Feb)
  • Mon → 英文缩写星期(如 Mon、Tue)
  • 2 → 日期(1–31,不补零)
  • 02 → 日期(两位,补零)
  • 15 → 小时(24小时制)
  • 03 → 小时(12小时制)
  • 04 → 分钟
  • 05
  • MST → 时区缩写(如 UTC、CST、PST;注意:不能直接解析“CST”这类歧义缩写,推荐用 ±0700)
  • -0700 → 数字时区偏移(推荐用于 Parse)

time.Format:把 time.Time 转成字符串

调用 t.Format(layout),layout 是上面参考时间风格的字符串:

now := time.Now()
fmt.Println(now.Format("2006-01-02 15:04:05"))     // 2025-05-20 14:30:45
fmt.Println(now.Format("2006/01/02"))              // 2025/05/20
fmt.Println(now.Format("Jan 2, 2006 at 3:04pm"))   // May 20, 2025 at 2:30pm
fmt.Println(now.Format("2006-01-02T15:04:05Z07:00")) // ISO8601 带时区

⚠️ 注意:Format 不会自动处理时区转换,输出的是该 time.Time 值在其原始时区下的表示。如需转为 UTC 或其他时区,先用 t.In(loc) 切换位置再 Format。

time.Parse:把字符串转成 time.Time

调用 time.Parse(layout, value),layout 必须与 value 的结构严格匹配:

s := "2025-05-20 14:30:45"
t, err := time.Parse("2006-01-02 15:04:05", s)
if err != nil {
    log.Fatal(err)
}
fmt.Println(t) // 2025-05-20 14:30:45 +0000 UTC(默认解析为本地时区,除非 layout 含时区)

✅ 推荐做法:在 layout 中显式包含时区信息,避免歧义:

  • "2006-01-02 15:04:05 -0700" 解析带偏移的时间,如 "2025-05-20 14:30:45 +0800"
  • "2006-01-02 15:04:05 MST" 需确保 MST 是 Go 内置支持的时区名(如 UTC、PST、CET),但不推荐——很多缩写(如 CST、IST)有歧义
  • 若输入无时区,默认按 本地时区 解析;如需强制 UTC,可后续调用 t.UTC()

常见坑与建议

❌ 错误:用 "yyyy-MM-dd""%Y-%m-%d" —— Go 不识别这些 C/Python 风格格式,会原样输出或 panic

❌ 错误:layout 中写 "01/02/2006" 却传入 "2025-05-20" —— 格式不匹配导致 Parse 失败

✅ 建议:

  • 记牢参考时间:Mon Jan 2 15:04:05 MST 2006,它是唯一“模板”
  • 优先使用带数字时区(-0700)的 layout,更可靠
  • 对用户输入时间,先 Normalize 时区(如统一转为 UTC),再存储或比较
  • time.RFC3339(即 "2006-01-02T15:04:05Z07:00")处理 API 时间字段,它是标准且 Go 内置常量

基本上就这些。掌握参考时间模型,Format 和 Parse 就不再神秘——它不是语法糖,而是一套明确、一致、无歧义的设计。


# python  # go  # golang  # go语言  # 排列  # yy  # 为什么 


相关文章: 佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何设计高效校园网站?  建站主机服务器选型指南与性能优化方案解析  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何快速上传建站程序避免常见错误?  如何用IIS7快速搭建并优化网站站点?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  中山网站推广排名,中山信息港登录入口?  如何通过主机屋免费建站教程十分钟搭建网站?  如何解决VPS建站LNMP环境配置常见问题?  网站制作说明怎么写,简述网页设计的流程并说明原因?  如何通过万网虚拟主机快速搭建网站?  如何破解联通资金短缺导致的基站建设难题?  如何挑选最适合建站的高性能VPS主机?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  如何选择PHP开源工具快速搭建网站?  常州自助建站费用包含哪些项目?  网站网页制作专业公司,怎样制作自己的网页?  Android自定义listview布局实现上拉加载下拉刷新功能  如何构建满足综合性能需求的优质建站方案?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  高性价比服务器租赁——企业级配置与24小时运维服务  如何用西部建站助手快速创建专业网站?  如何确认建站备案号应放置的具体位置?  建站之星免费版是否永久可用?  设计网站制作公司有哪些,制作网页教程?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  如何通过IIS搭建网站并配置访问权限?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  为什么Go需要go mod文件_Go go mod文件作用说明  家具网站制作软件,家具厂怎么跑业务?  如何快速完成中国万网建站详细流程?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  ,交易猫的商品怎么发布到网站上去?  如何通过商城自助建站源码实现零基础高效建站?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  建站上传速度慢?如何优化加速网站加载效率?  ,网站推广常用方法?  nginx修改上传文件大小限制的方法  如何在新浪SAE免费搭建个人博客?  南京网站制作费用,南京远驱官方网站?  婚礼视频制作网站,学习*后期制作的网站有哪些?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  公众号网站制作网页,微信公众号怎么制作?  建站之星如何取消后台验证码生成?  建站之星×万网:智能建站系统+自助建站平台一键生成  高端网站建设与定制开发一站式解决方案 中企动力  如何通过服务器快速搭建网站?完整步骤解析  建站主机与服务器功能差异如何区分?  个人摄影网站制作流程,摄影爱好者都去什么网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。