golang-标准库时间time
2023-02-26 18:00 dribs 阅读(38) 评论(0) 编辑 收藏 举报1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | package main import ( "fmt" "time" ) func main() { t := time.Now() //time.Time time.Date(2023, time.February, 19, 14, 38, 1, 393023500, time.Local) 2023-02-19 14:38:01.3930235 +0800 CST m=+0.008177501 fmt.Printf( "%T %#v %v\n" , t, t, t) //2023-02-19 06:38:42.351399 +0000 UTC fmt.Printf( "%v\n" , t.UTC()) //time.Date(2023, time.February, 19, 6, 39, 44, 393454500, time.UTC) fmt.Printf( "%#v\n" , t.UTC()) //2023/02/19 14:40:40 +0800 fmt.Println(t.Format( "2006/01/02 15:04:05 -0700" )) //2023/02/19 14:40:40 fmt.Println(t.Format( "2006/01/02 15:04:05" )) //2023/02/19 06:41:41 fmt.Println(t.UTC().Format( "2006/01/02 15:04:05" )) println( "========================" ) //根据字符串 格式化成时间 格式要一毛一样 timeStr := "2023#02/19\t14$42:23" parse, err := time.Parse( "2006#01/02\t15$04:05" , timeStr) if err != nil { fmt.Println( "faile`" ) } else { //2023-02-19 14:42:23 +0000 UTC 注意时区 fmt.Println( "success:" , parse) } fmt.Println(parse.Location()) //UTC 返回parse时区 fmt.Println(parse.Local()) //2023-02-19 22:42:23 +0800 CST 时间加了8小时转到了CST //加上时区 把时间格式化成真正的当地时间和时区 loc, _ := time.LoadLocation( "Asia/Shanghai" ) t1, err := time.ParseInLocation( "2006#01/02\t15$04:05" , timeStr, loc) if err != nil { fmt.Println( "fail" ) } else { //2023-02-19 14:42:23 +0800 CST fmt.Println( "t1:" , t1) } //时间成分 fmt.Println( //2023 February 2 19 parse.Year(), parse.Month(), int(parse.Month()), parse.Day(), //50 parse.YearDay(), //14 42 23 parse.Hour(), parse.Minute(), parse.Second(), "\n" , //时间戳 parse.Unix(), parse.UnixMilli(), parse.UnixMicro(), ) //小数部分匹配,可以使用0或9,0需要和小数部分个数匹配,9不需要 //time.Parse( // "2006/01/02 15:04:05.000 -0700", // "2008/09/08 20:36:50.123 +0800" // ) //time.Parse( // "2006/01/02 15:04:05.9 -0700", // "2008/09/08 20:36:50.1234 +0800" // ) //时间增量 println( "===========" ) delta := t.Sub(t1) //duration类型 //5h59m18.468554s 5.988463487222222 21558.468554 5h59m18.468554s fmt.Println(delta, delta.Hours(), delta.Seconds(), delta.String()) d1 := time.Duration(3) //3纳秒 3ns fmt.Println(d1) //3s 3h0m0s fmt.Println(time.Duration(3*time.Second), time.Duration(3*time.Hour)) t2 := t1.Add(time.Duration(3 * time.Second)) //t2: 2023-02-19 14:42:26 +0800 CST fmt.Println( "t2:" , t2) //2023-02-19 14:42:20 +0800 CST fmt.Println(t1.Add(-time.Duration(3 * time.Second))) fmt.Println(t2.After(t)) //false fmt.Println(t2.After(t1)) //true } |
1 | t.Format( "2006/01/02 15:04:05 -0700" ) 转成字符串 |
1 | time.Parse( "2006#01/02\t15$04:05" , timeStr) 字符串转成time类型<br>对time类型进行各种操作 |
1 | <br><br> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!