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

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

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

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


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

基本内容:

一、 时间和日期相关函数,需要导入 time 包

二、 time.Time 类型,用于表示时间

三、 获取到当前时间的方法: now := time.Now() // now 的类型就是 time.Time

四、 格式化日期时间

 

说明

在编程中,程序员会经常使用到日期相关的函数,比如:统计某段代码执行花费的时间等等。时间和日期的相关函数,用法也非常普遍。

 

一.时间和日期相关函数,需要导入 time 包

1、在 golang 里面,数据和日期的相关函数都放在 time 包中,time 包提供了时间的显示和测量用的函数。日历的计算采用的是公历,时间相关的函数都放在 time 包中。

image.png 

二. time.Time 类型,用于表示时间

1、在 golang 中有个类型叫 time.Time 类型,time 包里定义了一个常量 Time,Time 本身也是一种数据类型。

2、案例代码:

package main

import (

"fmt"

"time"

)

func main() {

//看看日期和时间相关函数和方法使用//1.获取当前时间

now := time.Now()

fmt.Printf("now=%v now type=%T", now,now)

}

3、运行结果:

image.png

4、代码分析:

引入 fmt 包和 time 包,写一个主函数,看看日期和时间相关函数和方法使用,获取当前时间,用一个 now 来获取 now := time.Now() ,先看 now 的值是多少,再看 now 的 type 类型是什么。运行后可以看到时间,并且有时区还有毫秒数,可以看到 now 的类型是 time.Time ,这个类型提供了一些相关的方法,可以用方法来获取更详细的信息。现在得到 now 并不可以很清楚的看出时间,下面一点是对它进行一个再处理。

 

三.获取到当前时间的方法: now := time.Now() // now 的类型就是 time.Time

1、案例代码:

package main

import (

"fmt"

"time"

)

func main() {

//2.通过 now 可以获取到年月日,时分秒

fmt.Printf("年=%v\n, now.Year())

fmt.Printf("月=%v\n", now.Month())

fmt.Printf("日=%vln", int(now.Month()))

fmt.Printf("时=%v\n", now.Hour())

fmt.Printf("分=%v\n", now.Minute())

fmt.Printf("秒=%v\n", now.Second())

}

2、输出结果:

年=2018

月=5

日=29

时=16

分=24

秒=58

3、代码分析:

通过 now 可以获取到年月日,时分秒,通过查 go 官方文档手册,点击 Now,Now 返回的是当前本地时间,返回的是 Time 类型,Time 是一个结构体,这个 Time 结构体中有很多方法,比如 func(Time)Unix,func(Time)UnixNano,Year、Month、Day。Year 是返回时间点对应的年份,Month 返回时间点对应的月份。获取年的方法 fmt.Printf("年=%v\n, now.Year()),获取分时秒的方法也一样,将里面的年改变成需要的时间就可以,运行之后,得到了年月日时分秒。但是返回的月份是英文的,如果把英文的月份改成中文的,需要添加一个 int,fmt.Printf("日=%vln", int(now.Month())) 转完就可以。

 

四.格式化日期时间

在输出的时候,往往会对时间格式化,可以清楚的看出当时的时间。

1、方式1

(1) 方式1:就是使用 Printf 或者 SPrintf

SPrintf 和 Printf 的区别在于 SPrintf 是字符串输出,而 Printf 是直接输出。

(2) 代码案例:

package main

import (

"fmt"

"time"

)

func main() {

//格式化日期时间

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)

}

(3) 结果输出:

当前年月日 2018-5-29 16:35:25

datestr= 当前年月日 2018-5-29-16:35:25

(4) 代码解析:

代码过长允许换行,但换行时要有逗号。当前年月日是按格式化输出的,每个值一一对应,输出是当前年月日 2018-5-29 16:35:25。如果不喜欢用——来表示间隔,也可以用空格来表示。用 Sprintf 可以把字符串本身拿到,这是格式化后把字符串返回给变量,可以对变量做相应的处理,比如保存在数据库中或是做其它处理。

2.方式2

(1) 使用 time.Format ( )方法完成:

now 是 time 类型,里面有个 Format 方法,直接写字符串 2006/01/02 15:04:05 是固定的写法,这个时间据说是 go 语言设计者最初想诞生 go 语言的时间。Time中有 Format 方法。

(2) 代码案例:

package main

import (

"fmt"

"time"

)

func main() {

//格式化日期时间的第二种方式

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()

(3) 输出结果:

2018/05/29 16:35:25

2018-05-29

16:35:25

(4) 对上面代码的说明:

fmt.Printf(now. Format( "2006-01-02"))输出的只是年月日,fmt.Printf(now.Format("15:04:05"))输出的是时分秒,

fmt.Printf(now.Format( " 2006/01/02 15:04:05"))里面的/是可以换成别的符号,只要数字不乱改。下划线,中划线都可以,但是数字不能改变,如果改变了数字,结果会错误。

如果只想输出月份 fmt.Printf(now.Format("01"))返回的就是月份,只想输出年,就把 01 改成 2006。

"2006/01/02 15:04:05”这个字符串的各个数字是固定的,必须是这样写。

"2006/01/02 15:04:05”这个字符串各个数字可以自由的组合,这样可以按程序需求来返回时间和日期。

相关文章
|
21天前
|
JSON 安全 网络协议
go语言使用内置函数和标准库
【10月更文挑战第18天】
14 3
|
2月前
|
Serverless Go
Go to Learn Go之时间日期
Go to Learn Go之时间日期
39 8
|
2月前
|
Go
go函数
go函数
33 10
Go语言的条件控制语句及循环语句的学习笔记
本文是Go语言的条件控制语句和循环语句的学习笔记,涵盖了if语句、if-else语句、if嵌套语句、switch语句、select语句以及for循环和相关循环控制语句的使用方法。
Go语言的条件控制语句及循环语句的学习笔记
|
2月前
|
编译器 Go C++
Go to Learn Go之函数
Go to Learn Go之函数
28 0
|
2月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
2月前
|
编译器 Go 索引
Go数组、多维数组和切片(动态数组),及常用函数len(),cap(),copy(),append()在切片中的使用
本文介绍了Go语言中数组、多维数组和切片(动态数组)的基本概念和操作,包括数组的定义、初始化、访问,多维数组的定义和访问,以及切片的创建、使用和扩容。同时,还讲解了切片中常用的函数len()、cap()、copy()和append()的使用方法。
|
2月前
|
人工智能 算法 搜索推荐
Go学习笔记-代码调
近年来,人工智能技术飞速发展,Cody作为由Sourcegraph开发的一款AI驱动编码助手,应运而生。它不仅提供代码预测与补全,还能深度理解代码上下文,为开发者提供准确建议,提升编码效率和质量。Cody能识别潜在错误并提出修复建议,缩短调试时间,同时进行智能代码审查,帮助优化代码结构和风格。未来,随着AI技术进步,Cody将不断学习优化,成为开发者不可或缺的伙伴,推动编程领域的创新与发展。
33 0
|
3月前
|
设计模式 Java 数据库连接
|
3月前
|
Go 开发者