[go学习笔记.第六章.函数,包,错误处理] 9.时间和日期函数

1.基本介绍

在编程中,会经常使用到日期相关函数,比如:统计某代码执行花费的时间等

2.使用细节以及注意事项

(1).在使用时,需要导入time包  

(2).time.Time类型,用于表示时间

//1.获取当前时间:now=2022-04-04 18:12:29.158668 +0800 CST m=+0.014286801, type=time.Time
now := time.Now()
fmt.Printf("now=%v, type=%T\n", now, now)	//now的类型就是time.Time

(3).获取到当前时间 

//1.获取当前时间:now=2022-04-04 18:12:29.158668 +0800 CST m=+0.014286801, type=time.Time
now := time.Now()    //now的类型就是time.Time

(4).获取到其它相关日期

    //1.获取当前时间:now=2022-04-04 18:12:29.158668 +0800 CST m=+0.014286801, type=time.Time
	now := time.Now()
	fmt.Printf("now=%v, type=%T\n", now, now)	//now的类型就是time.Time
	//2.通过now获取年月日,时分秒
	fmt.Printf("年=%v\n", now.Year())	//年=2022
	fmt.Printf("月=%v\n", now.Month())	//月=April
	fmt.Printf("月=%v\n", int(now.Month()))	//月=4
	fmt.Printf("日=%v\n", now.Day())	//	日=4
	fmt.Printf("时=%v\n", now.Hour())	//时=18
	fmt.Printf("分=%v\n", now.Minute())	//分=12
	fmt.Printf("秒=%v\n", now.Second())	//	秒=29

 (5).格式化时间

    //格式化日期函数
	//第一种方式:dateStr=当前年月日 2022-4-4 18:27:44
	fmt.Printf("当前年月日 %d-%d-%d %d:%d:%d\n", now.Year(), 
	now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
	
	dateStr := fmt.Sprintf("当前年月日 %d-%d-%d %d:%d:%d\n", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
	fmt.Printf("dateStr=%v\n",dateStr)	//格式化字符串,dateStr=当前年月日 2022-4-4 18:27:44

	//第二种方式
	fmt.Printf(now.Format("2006/01/02 15:04:05"))	//返回年月日时分秒,/可以替换成-,空格等
	fmt.Println()
	fmt.Printf(now.Format("2006-01-02"))	//返回年月日
	fmt.Println()
	fmt.Printf(now.Format("15:04:05"))	//返回当前时分秒
	fmt.Println()
	fmt.Printf(now.Format("01"))	//返回当前月份
	fmt.Println()

说明: '2006/01/02 15:04:05' 这个字符串的各个数字是固定的,必须这样写.''2006/01/02 15:04:05''这个字符串的各个数字可以自由组合,这样就可以按照程序的需求来返回时间和日期

(6).时间常量

Duration类型代表两个时间点之间经过的时间,以纳秒为单位。可表示的最长时间段大约290年。

const (

Nanosecond Duration = 1        //纳秒

Microsecond = 1000 * Nanosecond         //微妙

Millisecond = 1000 * Microsecond         //毫秒 

Second = 1000 * Millisecond         //秒

Minute = 60 * Second        //分钟

Hour = 60 * Minute        //小时

)

常用的时间段:没有定义一天或超过一天的单元,以避免夏时制的时区切换的混乱。

要将Duration类型值表示为某时间单元的个数,用除法:

second := time.Second fmt.Print(int64(second/time.Millisecond)) // prints 1000

要将整数个某时间单元表示为Duration类型值,用乘法:

seconds := 10 fmt.Print(time.Duration(seconds)*time.Second) // prints 10s

常量的作用:在程序中可用于获取指定时间单位的时间,比如:获取100毫秒: 100 * time.Millisecond

(7).结合Sleep来使用时间常量

    //需求:每隔1秒打印一个数字,打印到100退出
	//需求2:每隔0.1秒打印一个数字,打印到100退出
	var num int = 0
	for {
		num++
		fmt.Println(num)
		// time.Sleep(time.Second)	//每隔1秒打印一个数字
		time.Sleep(time.Millisecond) //每隔0.1秒打印一个数字
		if num  == 100 {
			break
		}
	}

(8).time的Unix,UnixNano的使用

fmt.Printf("Unix时间戳=%v,UnixNano时间戳=%v\n", time.Now().Unix(), time.Now().UnixNano())	//Unix时间戳=1649075021,UnixNano时间戳=1649075021304918200
//案例:编写一段程序,来统计函数test()执行的时间
package main

import (
		"fmt"
		"time"
		"strconv"
	)

func test() {
	str := ""
	for i := 0; i < 100000; i++ {
		str += "hello" + strconv.Itoa(i)
	}
}
func main() {
	//在执行test之前,先获取当前的unix时间戳
	start := time.Now().Unix()
	test()
	end := time.Now().Unix()
	fmt.Printf("执行test()耗时%v\n", end - start)
}

上一节:[go学习笔记.第六章.函数,包,错误处理] 8.字符串中常用的函数

下一节:[go学习笔记.第六章.练习] 循环打印输入年月日,(使用continue实现);随机猜数游戏;输出100以内的所有素数;输出小写的a-z以及大写的A-Z,使用for循环

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值