go里面的时间date

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
package main
 
import (
    "fmt"
    "time"
)
 
var timeLayoutStr = "2006-01-02 15:04:05" //go中的时间格式化必须是这个时间
//var timeLayoutStr = 2006/01/02 03:04:05 //合法, 格式可以改变
//var timeLayoutStr = 2019/01/02 15:04:05 //不合法, 时间必须是2016年1月2号这个时间
func testFormat() {
    /*
       格式:
       月份 1,01,Jan,January
       日  2,02,_2
       时  3,03,15,PM,pm,AM,am
       分  4,04
       秒  5,05
       年  06,2006
       时区 -07,-0700,Z0700,Z07:00,-07:00,MST
       周几 Mon,Monday
 
    */
    fmt.Println(time.Now().Format("现在是1月份"))
    fmt.Println(time.Now().Format("现在是01月_2日"))
    fmt.Println(time.Now().Format("现在是Jan月份"))
    fmt.Println(time.Now().Format("现在是January月份"))
    fmt.Println("现在是:", time.Now().Format(timeLayoutStr))
 
}
 
func testFormat1() {
    t := time.Now() //当前时间
    t.Unix()        //时间戳
 
    ts := t.Format(timeLayoutStr) //time转string
 
    fmt.Printf("time转string:%T,%v\n", ts, ts)
    st, _ := time.Parse(timeLayoutStr, ts) //string转time
 
    fmt.Printf("string转time :%T,%v\n", st, st)
    //在go中, 可以格式化一个自定义格式的时间字符串
    prefixTStr := "PREFIXA-- 2021-11-05 -TESTB- 18:32:12 --SUFFIXC"       //带前自定义格式的时间字符串
    preTimeLayoutStr := "PREFIXA-- 2006-01-02 -TESTB- 15:04:05 --SUFFIXC" //解析格式需要和自定义格式的时间字符串一致
    prefixTime, err := time.Parse(preTimeLayoutStr, prefixTStr)
    if err != nil {
        fmt.Println("err:", err)
    } else {
 
        fmt.Println("prefixTime:", prefixTime.Format(timeLayoutStr))
    }
 
    //时间加减 time.ParseDuration()
    // such as "300ms", "-1.5h" or "2h45m".
    // Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
    at, err := time.ParseDuration("-24h30m") //24小时30分钟前的时间, 正数就是之后的时间
    if err != nil {
        fmt.Println("err:", err)
    } else {
        fmt.Println("时间加减 -24小时30分钟:", (t.Add(at)).Format(timeLayoutStr))
    }
 
    //两个时间差
    sub := t.Sub(prefixTime)
    fmt.Println("两个时间差:", sub.Hours(), "小时") //sub.Seconds() 秒,  sub.Minutes()分钟,  sub.Hours()小时
 
}
 
func main() {
    testFormat()
 
    testFormat1()
 
}

  

posted @   wsh3166Sir  阅读(137)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示