Go中的time包

参考的地址:http://studygolang.com/static/pkgdoc/pkg/time.htm

在Go的时间处理,都是针对type Time 的处理,所以在处理时间之前需要有 Time 类型的变量。

1、创建Time类型变量

  • 当前时间:func Now() Time
  • 根据时间戳的秒数和纳秒数生成时间:Unix(sec int64, nsec int64) Time
  • 根据具体的日期生成时间:
    format := “2006-01-02 15:04:05″
    t3,_ := time.Parse(format,”2017-08-20 08:04:02″)

2、创建Duration类型变量

这个变量在计算时间差特别有用。

  • func ParseDuration(s string) (Duration, error):ParseDuration解析一个时间段字符串。一个时间段字符串是一个序列,每个片段包含可选的正负号、十进制数、可选的小数部分和单位后缀,如”300ms”、”-1.5h”、”2h45m”。合法的单位有”ns”、”us” /”µs”、”ms”、”s”、”m”、”h”。

3、针对Time的操作方法

  • 获取时间戳(单位:秒):func (t Time) Unix() int64
  • 获取时间戳(单位:纳秒):func (t Time) UnixNano() int64
  • 判断两个时间是否相等 :func (t Time) Equal(u Time) bool
  • 判断时间t,在时间u之前 :func (t Time) Before(u Time) bool
  • 判断时间t,在时间u之后 :func (t Time) After(u Time) bool
  • 返回时间点t对应的年、月、日:func (t Time) Date() (year int, month Month, day int) ,注意month返回的Month类型,
  • 返回时间点t对应的年、月、日:func (t Time) Clock() (hour, min, sec int)
  • 返回时间点t对应的年份:func (t Time) Year() int
  • 返回时间点t对应那一年的第几月:func (t Time) Month() Month
  • 返回一年中的第几个星期:func (t Time) ISOWeek() (year, week int)
  • 返回一年中的第几天:func (t Time) YearDay() int
  • 返回一个月中第几天:func (t Time) Day() int
  • 返回时间点t对应的那一周的周几:func (t Time) Weekday() Weekday
  • 返回t对应的那一天的第几小时,范围[0, 23]:func (t Time) Hour() int
  • 返回t对应的那一小时的第几分种,范围[0, 59]:func (t Time) Minute() int
  • 返回t对应的那一分钟的第几秒,范围[0, 59]:func (t Time) Second() int
  • 返回t对应的那一秒内的纳秒偏移量,范围[0, 999999999]:func (t Time) Nanosecond() int
  • Format根据layout指定的格式返回t代表的时间点的格式化文本表示:func (t Time) Format(layout string) string,最常用,例如:format := “2006-01-02 15:04:05″,fmt.Printf(“现在时间是:%s”,t2.Format(format))
  • String返回采用如下格式字符串的格式化时间:func (t Time) String() string
  • Parse解析一个格式化的时间字符串并返回它代表的时间:func Parse(layout, value string) (Time, error)
  • Add返回时间点t+d:func (t Time) Add(d Duration) Time
  • 返回一个时间段t-u:func (t Time) Sub(u Time) Duration

4、运行示例:

t1 := time.Unix(1494978897,0)
t2 := time.Now()
fmt.Printf("时间戳(单位:秒):%d\n",t2.Unix())
fmt.Printf("时间戳(单位:纳秒):%d\n",t1.UnixNano())
fmt.Printf("t1等于t2吗? : %v\n", t1.Equal(t2))
fmt.Printf("t1在t2之前吗? : %v\n", t1.Before(t2))
fmt.Printf("t1在t2之后吗? : %v\n", t1.After(t2))
y,month,d := t2.Date()
h,m,s := t2.Clock()
fmt.Printf("现在时间是 : %d年%v月%d日 %d:%d:%d\n",y,month,d,h,m,s)
fmt.Printf("现在是第%v月\n",t2.Month())
_,w := t2.ISOWeek()
fmt.Printf("现在是第%d个星期\n",w)
fmt.Printf("现在是一年中的第%d天\n",t2.YearDay())
format := "2006-01-02 15:04:05"
fmt.Printf("现在时间是:%s",t2.Format(format))

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>