golang-package-time

time包

一、时间类型

1.time.time用来表示时间
2.time.Now():获取当前时间
示例:

func timeDemo() {
	now := time.Now()  //获取当前时间
	fmt.Println(now)  //打印当前时间
	
	//获取时间对象的信息
	year := now.Year()
	month := now.Month()
	day := now.Day()
	hour := now.Hour()
	minute := now.Minute()
	second := now.Second()
	//02表示进行格式化时间
	fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)
	//运行结果:
	//2020-03-04 09:33:18.0425102 +0800 CST m=+0.006000401
	//2020-03-04 09:33:18
}

二、时间戳
1.时间戳:自1970年1月1日(08:00:00GMT)至当前时间的总毫秒数
示例
2.时间戳转换为时间格式:time.Unix()

func timestampDemo() {
	timestamp1 := now.Unix()  //毫秒时间戳
	fmt.Println(timestamp1)
	timestamp2 := now.UnixNano()  //纳秒时间戳
	fmt.Println(timestamp2)
	timeObj := time.Unix(timestamp1, 0) // 将时间戳转换成时间格式
	fmt.Println(timeObj) 
	//运行结果
	//1583286743
	//1583286743772042100
	//2020-03-04 09:52:23 +0800 CST
}

三、时间间隔
1.time.Duration是一种类型
2.time包定义的时间间隔类型的常量如下:

const (
    Nanosecond  Duration = 1
    Microsecond          = 1000 * Nanosecond
    Millisecond          = 1000 * Microsecond
    Second               = 1000 * Millisecond
    Minute               = 60 * Second
    Hour                 = 60 * Minute
)

func main() {
	fmt.Println(time.Nanosecond)  //1ns
	fmt.Println(time.Duration(1)) //1ns
	fmt.Println(time.Second)  //1s
}

四、时间操作
1.Add:时间加时间间隔
示例:

func main() {
	now := time.Now()
	later := now.Add(time.Hour) //当前时间加1小时后的时间
	fmt.Println(later)
	//运行结果:
	//2020-03-04 11:13:51.0066678 +0800 CST m=+3600.005000301
}

2.Sub与解释字符串格式的时间
2.1:LoadLocation是time包里面的一个构造函数,主要用于查找地区及返回地区名的指针
2.2:ParseInLocation主要用于按照指定格式,指定地区进行时间的格式化
示例:

func main() {
	now := time.Now()
	fmt.Println(now)
	// 加载时区
	loc, err := time.LoadLocation("Asia/Shanghai")
	if err != nil {
		fmt.Println(err)
		return
	}
	// 按照指定时区和指定格式化时间
	timeObj, err := time.ParseInLocation("2006/01/02 15:04:05", "2019/08/04 14:15:20", loc)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(timeObj)
	fmt.Println(now.Sub(timeObj))  //当前时间减去timeObj时间的差值
	//运行结果
	//2020-03-04 10:37:11.7807875 +0800 CST m=+0.004000301
	//2019-08-04 14:15:20 +0800 CST
	//5108h21m51.7807875s
}

…欠缺
五、时间格式化
1.时间格式化方法:Format
2.go语言中的时间格式化模板为go的诞生时间:2006年01月02日15点04分05秒
示例:

func main() {
	now := time.Now()  //获取当前时间
	fmt.Println(now.Format("2006/01/02 15:04:05"))  //时间格式化(24小时制)
	fmt.Println(now.Format("2006-01-02 03:04:05 PM"))  //时间格式化(12小时制)
	//运行结果
	//2020/03/04 10:21:31
	//2020-03-04 10:21:31 AM
}

练习
计算运行一段代码的时间,时间单位:微秒

package main

import "fmt"

//定义一个测试函数
func test() {
	var sum int
	for i := 0; i < 1000000; i++ {
		sum += i
	}
}
func main() {
	start := time.Now().UnixNano()  //获取当前时间转换成时间戳的纳秒
	test()  //运行测试代码
	end := time.Now().UnixNano()  //获取运行后代码时间转换成时间戳的纳秒
	sub := end - start  //差值
	fmt.Println(sub / 1000)  //单位转换成微秒
	//运行结果
	//33001
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值