时间格式
前端和后端时经常会遇到各种各样的时间格式,这些格式在编写程序的时候都需要去使用不同的处理方式,这里集中写一下。
先说一下各种不同的时间格式。
类型名 | 格式 | 说明 |
---|---|---|
ISO 8601 | 一般:2020-12-05T05:33:19Z 东八区:2004-05-03T17:30:08+08:00 | 国际标准化组织的日期和时间的表示方法,这种格式是最常用的格式。 |
RFC2822 | 1992/02/12 12:23:22+0800 | 符合rfc2822格式的时间 |
格林威治标准时间GMT | Fri Jul 20 2018 00:00:00 GMT+0800 (中国标准时间) | 格林威治的子午线作为划分地球东西两半球的经度零度,并作为时间的零点 |
世界协调时间UTC | Mon, 29 Apr 2019 09:52:21 GMT | 经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密 |
Unix时间戳 | 以秒为单位:1607150827 以纳秒为单位:1607150827857990329 | 是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。 |
一般来说 iso8601时间 和 Unix时间戳 会比较常用。
GO
Go获取时间
获取时间的方式通过time包。
fmt.Println(time.Now(), time.Now().Unix(), time.Now().UnixNano())
结果分别是 iso8601时间 和两种格式的 Unix时间戳。
time.Now() 返回 time.Time 格式,这个格式就是iso8601标准。
2020-12-05 14:51:28.103017059 +0800 CST m=+0.000064327 1607151088 1607151088103017215
Go比较时间
Unix() 和 UnixNano() 函数返回的是 int64 的值,因此可以直接比较大小。
fmt.Prinln(time.Now().Unix() > time.Now().AddDate(0, -1, 0).Unix())
这里的 AddDate函数 的三个参数分别是 年月日 ,往后增加为正,往前为负。
如果是要更加精确加减,可以使用 Add函数 。
now := time.Now()m, _ := time.ParseDuration("-1m")m1 := now.Add(m)fmt.Println(m1)
time.ParseDuration 可以使用的时间单位有:"ns", "us" (or "µs"), "ms", "s", "m", "h"
Go格式化输出
一种是获取,年月日分秒纳秒的值。
time.Now().Year()
time.Now().Month()
time.Now().Day()
time.Now().Minute()
time.Now().Second()
time.Now().Nanosecond()
还有种就是使用 Format ,注意其中的值是固定的。
fmt.Println(now.Format("2006-01-02 15:04:05"))
fmt.Println(now.Format("2006/01/02 15:04:05"))
fmt.Println(now.Format("2006/01/02"))//年月日
fmt.Println(now.Format("15:04:05"))//时分秒
Gostring转时间戳
stringTime := "2017-08-30 16:40:41"
loc, _ := time.LoadLocation("Local")
time, _ := time.ParseInLocation("2006-01-02 15:04:05", stringTime, loc)
fmt.Println(time.Unix())
js
获取时间
console.log(new Date())
console.log(new Date('2020-12-5'))
结果是`GMT时间`格式
Sat Dec 05 2020 15:21:57 GMT+0800 (中国标准时间)
比较时间
可以直接比较
console.log(new Date(2020,12,5)>new Date(2020,12,4))
结果是true
格式化输出
Date() 一样有 getDay,getMonth 函数来获取年月日秒等值
还可以使用 getTime() 来获取时间戳
转时间戳
console.log( Date.parse("2019-03-20 02:10:11".replace(/-/gi, "/")))
结果为 1553019011000