时间时间戳时间的格式化和解析.docx
《时间时间戳时间的格式化和解析.docx》由会员分享,可在线阅读,更多相关《时间时间戳时间的格式化和解析.docx(7页珍藏版)》请在冰点文库上搜索。
![时间时间戳时间的格式化和解析.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/6831788c-67c9-4d57-b9c8-4ce000ce62bf/6831788c-67c9-4d57-b9c8-4ce000ce62bf1.gif)
时间时间戳时间的格式化和解析
时间,时间戳,时间的格式化和解析
时间
代码实例
//Go对时间和时间段提供了大量的支持;这里是一些例子。
packagemain
import"fmt"
import"time"
funcmain(){
p:
=fmt.Println
//得到当前时间。
now:
=time.Now()
p(now)
//通过提供年月日等信息,你可以构建一个`time`。
时间总
//是关联着位置信息,例如时区。
then:
=time.Date(
2009,11,17,20,34,58,651387237,time.UTC)
p(then)
//你可以提取出时间的各个组成部分。
p(then.Year())
p(then.Month())
p(then.Day())
p(then.Hour())
p(then.Minute())
p(then.Second())
p(then.Nanosecond())
p(then.Location())
//输出是星期一到日的`Weekday`也是支持的。
p(then.Weekday())
//这些方法来比较两个时间,分别测试一下是否是之前,
//之后或者是同一时刻,精确到秒。
p(then.Before(now))
p(then.After(now))
p(then.Equal(now))
//方法`Sub`返回一个`Duration`来表示两个时间点的间
//隔时间。
diff:
=now.Sub(then)
p(diff)
//我们计算出不同单位下的时间长度值。
p(diff.Hours())
p(diff.Minutes())
p(diff.Seconds())
p(diff.Nanoseconds())
//你可以使用`Add`将时间后移一个时间间隔,或者使
//用一个`-`来将时间前移一个时间间隔。
p(then.Add(diff))
p(then.Add(-diff))
}
运行程序
$goruntime.go
2012-10-3115:
50:
13.793654+0000UTC
2009-11-1720:
34:
58.651387237+0000UTC
2009
November
17
20
34
58
651387237
UTC
Tuesday
true
false
false
25891h15m15.142266763s
25891.25420618521
1.5534752523711128e+06
9.320851514226677e+07
93208515142266763
2012-10-3115:
50:
13.793654+0000UTC
2006-12-0501:
19:
43.509120474+0000UTC
#下面我们将看到时间到Unix时间的相关概念。
时间戳
代码实例
//一般程序会有获取[Unix时间](http:
//zh.wikipedia.org/wiki/UNIX%E6%97%B6%E9%97%B4)
//的秒数,毫秒数,或者微秒数的需要。
来看看如何用Go来实现。
packagemain
import"fmt"
import"time"
funcmain(){
//分别使用带`Unix`或者`UnixNano`的`time.Now`
//来获取从自[协调世界时](http:
//zh.wikipedia.org/wiki/%E5%8D%94%E8%AA%BF%E4%B8%96%E7%95%8C%E6%99%82)
//起到现在的秒数或者纳秒数。
now:
=time.Now()
secs:
=now.Unix()
nanos:
=now.UnixNano()
fmt.Println(now)
//注意`UnixMillis`是不存在的,所以要得到毫秒数的话,
//你要自己手动的从纳秒转化一下。
millis:
=nanos/1000000
fmt.Println(secs)
fmt.Println(millis)
fmt.Println(nanos)
//你也可以将协调世界时起的整数秒或者纳秒转化到相应的时间。
fmt.Println(time.Unix(secs,0))
fmt.Println(time.Unix(0,nanos))
}
运行程序
$gorunepoch.go
2012-10-3116:
13:
58.292387+0000UTC
1351700038
135********92
135********92387000
2012-10-3116:
13:
58+0000UTC
2012-10-3116:
13:
58.292387+0000UTC
#下面我们将看看另一个事件相关的任务:
时间格式化和解析。
时间的格式化和解析
代码实例
//Go支持通过基于描述模板的时间格式化和解析。
packagemain
import"fmt"
import"time"
funcmain(){
p:
=fmt.Println
//这里是一个基本的按照RFC3339进行格式化的例子,使用
//对应模式常量。
t:
=time.Now()
p(t.Format(time.RFC3339))
//时间解析使用同`Format`相同的形式值。
t1,e:
=time.Parse(
time.RFC3339,
"2012-11-01T22:
08:
41+00:
00")
p(t1)
//`Format`和`Parse`使用基于例子的形式来决定日期格式,
//一般你只要使用`time`包中提供的模式常量就行了,但是你
//也可以实现自定义模式。
模式必须使用时间`MonJan215:
04:
05MST2006`
//来指定给定时间/字符串的格式化/解析方式。
时间一定要按照
//如下所示:
2006为年,15为小时,Monday代表星期几,等等。
p(t.Format("3:
04PM"))
p(t.Format("MonJan_215:
04:
052006"))
p(t.Format("2006-01-02T15:
04:
05.999999-07:
00"))
form:
="304PM"
t2,e:
=time.Parse(form,"841PM")
p(t2)
//对于纯数字表示的时间,你也可以使用标准的格式化字
//符串来提出出时间值得组成。
fmt.Printf("%d-%02d-%02dT%02d:
%02d:
%02d-00:
00\n",
t.Year(),t.Month(),t.Day(),
t.Hour(),t.Minute(),t.Second())
//`Parse`函数在输入的时间格式不正确是会返回一个
//错误。
ansic:
="MonJan_215:
04:
052006"
_,e=time.Parse(ansic,"8:
41PM")
p(e)
}
运行程序
$goruntime-formatting-parsing.go
2014-04-15T18:
00:
15-07:
00
2012-11-0122:
08:
41+0000+0000
6:
00PM
TueApr1518:
00:
152014
2014-04-15T18:
00:
15.161182-07:
00
0000-01-0120:
41:
00+0000UTC
2014-04-15T18:
00:
15-00:
00
parsingtime"8:
41PM"as"MonJan_215:
04:
052006":
...上一节下一节动手实践是学习IT技术最有效的方式!
开始实验