分享
  1. 首页
  2. 文章

Go_21: Golang 中 time 包的使用二

liang1101 · · 1617 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

常量声明:

const TimeLayout = "2006年01月02日 15:04:05"

这是个奇葩,必须是这个时间点,据说是 go 诞生之日, 记忆方法:6-1-2-3-4-5

1. 获取当前时间戳

func GetCurrentSystemTimestamp() int64 {
 return time.Now().Unix()
}

2. 获取当前 string 时间

func GetCurrentSystemTimeStr() string {
 return time.Now().Format(TimeLayout)
}

3. 时间戳 转 string时间格式

func Timestamp2StandardTimeStr(timestamp int64) string {
 return time.Unix(timestamp, 0).Format(TimeLayout)
}

4. string时间 转 时间戳

这个稍微有点复杂,golang 语言中在进行此项时间转换是,如果直接使用的是 parse 进行格式化,默认会使用 UTC 格式。那么到底什么是 UTC 时间格式呢?

整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC 与 格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。北京时区是东八区,领先 UTC 八个小时,故如果传入字符串为:2017年11月13日 11:14:21,结果会返回 UTC 转换后的时间戳为:1510571661(2017年11月13日 19:14:21)。

要想解决这个问题,需要使用 time 为我们提供的另外一个解析函数:parseInLocaltion

func TimeStr2Timestamp(timeStr string) int64 {
 // 得到本地时区
 loc, _ := time.LoadLocation("Local")
 // 读取文件中的时间字符串末尾会带有换行符,需要将其去掉否则解析异常
 tm, error := time.ParseInLocation(TimeLayout, strings.Trim(timeStr, "\n"), loc)
 if error != nil {
 log.Fatal(error)
 return 0
 }
 return tm.Unix()
}

有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:liang1101

查看原文:Go_21: Golang 中 time 包的使用二

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1617 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏