Go 时间和日期函数详解(2) | 学习笔记

简介: 快速学习 Go 时间和日期函数详解(2)

开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map: Go 时间和日期函数详解(2)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9619


Go 时间和日期函数详解(2)

基本内容:

一.时间的常量

二.结合 Sleep 来使用一下时间常量

三. time 的 Unix 和 UnixNano 的方法

 

一.时间的常量

1、在编辑的时候会经常用到时间的常量。例如,有时会对程序进行休眠处理,在休眠的时候会用到 sleep 函数,sleep 休眠的时候会指定休眠的时间,休眠多长时间会用到时间的常量,这个时间常量是 time 类型里的常量。例如小时、分钟、秒。这些常量的定义在 GO 语言标准库手册中可以找到,在 time 中,Duration 类型代表两个时间点之间经过的时间。time.Second/10 这种写法不对。

const (

Nanosecond Duration=1//纳秒

Microsecond=1000* Nanosecond //微秒

Millisecond=1000* Microsecond//毫秒

Second=1000* Millisecond //秒

Minute=60 second //分钟

Hour=60 * Minute //小时

2、常量的作用:在程序中可用于获取指定时间单位的时间,比如想得到 100 毫秒100 time.Millisecondtime. 要休眠一段时间,必须要用到时间常量。

 

二.结合 Sleep 来使用一下时间常量

1、需要每隔 1 秒中打印一个数字,打印到 100 时就退出。在外面定义一个变量i=0,i++ 再输出 i,休眠的时候用 time 包 sleep。运行后每隔一秒就输出一个数字,但是是死循环,需要按 ctrl c 强制退出。如果每隔 0.1 秒中打印一个数字,打印到 100 时就退出,在后面直接乘 0.1 是不行的,因为里面要传一个整数进行。可以直接将 second 改成 Mi1lisecond*100,这也是设置常量的原因。

2、代码案例:

package main

import (

"fmt"

"time"

)

func main() {

//需求 1,每隔 1 秒中打印一个数字,打印到 100 时就退出

//需求 2: 每隔 0.1 秒中打印一个数字,打印到 100 时就退出

i := 0

for {

i++

fmt.Println(i)

//休眠

//time.sleep(time.second)

time.sleep(time.Mi1lisecond*100)

if i == 100 {

break

}

}

}

 

三. time 的 Unix 和 UnixNano 的方法

1、作用是可以获取随机的数字,如果用 random 不去下一个种子,那么每次获取的随机数都是一样的,而且 Unix 获取的随机数是一个秒数,而 UnixNano 是获取到纳秒数,UnixNano 就更随机了,可以精确到纳秒。

2、打开 GO 语言标准库手册,找到 time 类型,time 类型中有 Unix 和UnixNano 。Unix 会返回从 1970 到现在返回的秒数,从 1970.1.1 到现在经过了多少秒,那么每次执行的时候都不一样,因为时间在不停的变化。UnixNano 是从 1970 到现在返回的纳秒数。

(1) func (Time)Unix

func (t Time) Unix() int64

func (t Time) Unix() int64把类型写在前面,返回的类型在后面,和函数不一样,表示的是这个方法只能在 time 类型中用,int64 是方法。

Unbx 将 t 表示为 Unix 时间,即从时间点 January 1,1970 UTC 到时间点t所经过的时间(单位秒)

(2) func (Time) UnixNano

func (t Time) UnixNano()int64

UnixNano 将 t 表示为 Unix 时间,即从时间点 January 1,1970 UTC 到时间点 t 所经过的时间(单位纳秒)。如果纳秒为单位的 unx 时间超出了 int64 能表示的范围,结果是未定义的。注意这就意味着 Time 零值调用 UnixNano 方法的话,结果是未定义的。

3、代码案例:

package main

import (

"fmt"

"time"

)

func main() {

// unix 和 unixNano 的使用

fmt.Printf("unix时间戳=%v unixnano时间戳=%v", now.Unix(),now.UnixNano())

}

4、输出结果:

unix 时间戳=1527584260

unixnano 时间戳=1527584260482213200

5、代码分析:

unix 和 lunixNano 的使用,Unix 会返回从 1970 到现在返回的秒数,UnixNano 是从 1970 到现在返回的纳秒数,返回的都是整数。Now 就是 Time 类型的。运行之后,再次运行结果会变化,因为时间在不停的变化。

6、总结:

本章重点介绍了时间的常量、休眠 sleep、Unix 时间戳和 UnixNano 时间戳的获取,在做开发的时候会用到经常 Unix 时间戳和 UnixNano 时间戳的获取。

相关文章
|
2月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
212 1
|
3月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
|
6月前
|
人工智能 Dart Go
Go语言中的make和new函数的区别及使用场景
本文详细解析了Go语言中`make`和`new`函数的使用方法及区别。`make`用于创建切片、映射和通道等引用类型,返回初始化后的值;`new`用于创建任意类型的零值对象,返回指向该对象的指针。文章通过多个示例说明两者的应用场景,并总结了面试中可能遇到的相关问题,如底层实现、使用场景及优缺点等,帮助读者更好地理解和区分这两个函数。
220 1
|
7月前
|
Go 调度
GO语言函数的内部运行机制分析
以上就是Go语言中函数的内部运行机制的概述,展示了函数在Go语言编程中如何发挥作用,以及Go如何使用简洁高效的设计,使得代码更简单,更有逻辑性,更易于理解和维护。尽管这些内容深入了一些底层的概念,但我希望通过这种方式,将这些理论知识更生动、更形象地带给你,让你在理解的同时找到编程的乐趣。
162 5
|
7月前
|
Go Python
函数的定义与调用 -《Go语言实战指南》
本文介绍了 Go 语言中函数的核心特性与用法,包括基本定义格式、调用方式、多返回值、返回值命名、参数类型简写、可变参数、高阶函数及匿名函数等内容。通过示例代码详细展示了如何定义和使用不同类型的函数,使读者能够全面了解 Go 函数的灵活性与强大功能。
149 12
|
JSON 安全 网络协议
go语言使用内置函数和标准库
【10月更文挑战第18天】
188 3
|
Serverless Go
Go to Learn Go之时间日期
Go to Learn Go之时间日期
175 8
|
编译器 Go C++
Go to Learn Go之函数
Go to Learn Go之函数
147 1
Go语言的条件控制语句及循环语句的学习笔记
本文是Go语言的条件控制语句和循环语句的学习笔记,涵盖了if语句、if-else语句、if嵌套语句、switch语句、select语句以及for循环和相关循环控制语句的使用方法。
Go语言的条件控制语句及循环语句的学习笔记
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。

热门文章

最新文章