分享
  1. 首页
  2. 文章

标准库time中的常用时间转换方法

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

package main
import (
 "fmt"
 "time"
)
func main() {
 //1、指定年月日时分秒,创建一个时间
 oneDay := time.Date(2019, 3,6, 22, 20, 0, 0, time.Local)
 //2、指定当前时间
 oneDay = time.Now()
 //3、输出指定时间oneday的字符串格式,如:20190306222400,年月日时分秒
 //如果要输出如:2019年03月06日 22:27:27,则format是:%04d-%02d-%02d %02d:%02d:%02d
 dayStr := fmt.Sprintf("%04d%02d%02d%02d%02d%02d", oneDay.Year(), oneDay.Month(), oneDay.Day(), oneDay.Hour(), oneDay.Minute(), oneDay.Minute())
 fmt.Println(dayStr)
 //还有一种更简单的方式,如:这里的模板时间20060102150405中的时间是固定的,只能是时间2019年04月02日 15:04:05的各种组合。
 dayStr1 := oneDay.Format("20060102150405")
 fmt.Println("dayStr1 =", dayStr1) //dayStr1 = 20190306232012
 //4、将指定时间的字符串,转换成时间Time类型,如,将"2019年04月02日 15:04:05"转换成Time类型的值
 //注意:这里layout中的模板,可以随意编写(参考下面layout的各种变形),但时间必须是:2006年01月02日 15:04:05,如果模板中用其他值,则最终拿到的结果是不对的。
 layout := "2006年01月02日 15:04:05"
 oneTime, _ := time.Parse(layout, "2019年04月02日 15:04:05")
 fmt.Println("oneTime=", oneTime) //oneTime= 2019年04月02日 15:04:05 +0000 UTC
 layout = "20060102150405"
 oneTime1, _ := time.Parse(layout, "20190306225000")
 fmt.Println("oneTime1=", oneTime1) //oneTime1= 2019年03月06日 22:50:00 +0000 UTC
 layout = "010220061504"
 oneTime2, _ := time.Parse(layout, "030620192250")
 fmt.Println("oneTime2=", oneTime2) //oneTime2= 2019年03月06日 22:50:00 +0000 UTC
 //5、使用1970到现在的unix时间戳创建一个时间Time
 oneTime3 := time.Unix(1551884600, 0)
 fmt.Println("oneTime3=", oneTime3) //oneTime3= 2019年03月06日 23:03:20 +0800 CST
 //6、返回一个时间的unix时间戳,即秒值
 s := oneTime3.Unix()
 fmt.Println("s=", s) //s= 1551884600
 //7、返回一个时间的纳秒时间戳,纳秒时间戳是在unix时间戳后面加9位
 ns := oneTime3.UnixNano()
 fmt.Println("ns=", ns) //ns= 1551884600000000000
 //8、返回一个时间前后的日期,这种方法可以前后调整精确的时间
 //返回一个日期三天半后的时间,一天86400秒
 oneTime4 := oneTime3.Add(3.5 * 86400 * time.Second)
 fmt.Println("oneTime4 =", oneTime4) //oneTime4 = 2019年03月10日 11:03:20 +0800 CST
 //返回一个日期三天前的时间,一天86400秒
 oneTime5 := oneTime3.Add(-3 * 86400 * time.Second)
 fmt.Println("oneTime5 =", oneTime5) //oneTime5 = 2019年03月03日 23:03:20 +0800 CST
 //9、给一个时间,增加或减去指定的几年几个月几日,如,给一个时间增加三天,简便方法是
 oneTime6 := oneTime3.AddDate(0, 0, 3)
 fmt.Println("oneTime6 =", oneTime6) //oneTime6 = 2019年03月09日 23:03:20 +0800 CST
 //增加一个月
 oneTime7 := oneTime3.AddDate(0, 1, 0)
 fmt.Println("oneTime7 =", oneTime7) //oneTime7 = 2019年04月06日 23:03:20 +0800 CST
 fmt.Println(oneDay)
}

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

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

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

用户登录

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

今日阅读排行

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

一周阅读排行

    加载中

关注我

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

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

给该专栏投稿 写篇新文章

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

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