Go语言time库的深入研究

本文深入探讨了Go语言1.10.3版本中的time库,重点关注time.go、format.go和zoneinfo.go这三个核心文件。内容包括time库的主要方法及简单解释,如时间格式化、时区处理等。
摘要由CSDN通过智能技术生成

本人机器的go版本为1.10.3,所以对于time库的研究是基于go1.10.3,下面是time库下的所有go文件。
 go 1.10.3 time库下的go文件

先排除xxx_test.go文件,主要的文件为:

  • time.go
  • format.go
  • zoneinfo.go
  • sleep.go
  • tick.go
    其他的sys_xxx.gozoneinfo_xxx.go都是zoneinfo.go的附庸,兼容不同平台打开$GOROOT/lib/time/zoneinfo.zip,进行指定时区的分析工作。
    而sleep.go和tick.go,其实是time.Duration延伸的功能,主要服务于goroutine的工作,这里暂时不讨论这两个文件。

time.go, format.go, zoneinfo.go的主要可以的调用方法和简单解释如下:

package main

import (
	"time"
	"fmt"
	"reflect"
)

func main() {
   
	genUTCTime()
	genUTCTime1()
	parseTime()
	parseDuration()

	now := time.Now()
	formatTime := timeStampFormat(now.UnixNano())
	fmt.Println(formatTime)

	fmt.Println(now)
	fmt.Println(now.UnixNano()) // 生成时间戳19位
	fmt.Println(now.UnixNano() / 1e6)
	fmt.Println(now.Unix()) // 时间戳10位

	// 生成两个时间的差值 :时间段
	lastTime := time.Unix(0, 1550714939515549582)
	dur := now.UTC().Sub(lastTime.UTC())
	fmt.Printf("duration is: %v\n", dur)
	fmt.Printf("duration to string is: %s\n", dur.String())
	fmt.Printf("duration to Nanoseconds is: %v\n", dur.Nanoseconds())
	fmt.Printf("duration to Seconds is: %v\n", dur.Seconds())
	fmt.Printf("duration to Minutes is: %v\n", dur.Minutes())
	fmt.Printf("duration to Hour is: %v\n", dur.Hours())

	secondTime := time.Unix(0, 1550721050238199291
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值