详解Golang time包中的结构体time.Time

 更新时间:2023年07月28日 09:16:03   作者:路多辛  
在日常开发过程中,会频繁遇到对时间进行操作的场景,使用 Golang 中的 time 包可以很方便地实现对时间的相关操作,本文先讲解一下 time 包中的结构体 time.Time,需要的朋友可以参考下

time.Time

time.Time 类型用来表示一个具体的时间点,可以精确到纳秒。结构体定义和对应的方法如下:

type Time struct {
	wall uint64
	ext  int64
	loc *Location
}

获取各种时间点属性的方法

  • func (t Time) Date() (year int, month Month, day int),获取日期(年、月、日)信息。
  • func (t Time) Year() int,获取年份信息。
  • func (t Time) YearDay() int,获取一年中第几天(1~365)。
  • func (t Time) Month() Month,获取月份信息,返回的是一个 Month 类型;
  • func (t Time) ISOWeek() (year, week int),返回 ISO 8601 格式的年份和第几周(1-53)。
  • func (t Time) Weekday() Weekday,返回的一个Weekday类型。
  • func (t Time) Day() int,获取月内第几数(1~31)。
  • func (t Time) Clock() (hour, min, sec int),获取时间(时、分、秒)信息。
  • func (t Time) Hour() int,获取小时信息(0~23)。
  • func (t Time) Minute() int,获取分钟信息(0~59)。
  • func (t Time) Second() int,获取秒信息(0~59)。
  • func (t Time) Nanosecond() int,获取纳秒信息(0~999999999)。
  • func (t Time) Unix() int64,获取秒时间戳。
  • func (t Time) UnixMilli() int64,获取毫秒时间戳。
  • func (t Time) UnixMicro() int64,获取微秒时间戳。
  • func (t Time) UnixNano() int64,获取纳秒时间戳。
  • func (t Time) String() string,返回 "2006-01-02 15:04:05.999999999 -0700 MST" 类型的时间格式。
  • func (t Time) Location() *Location,获取时区信息。

看个简单的示例:

package main
import (
	"fmt"
	"time"
)
func main() {
	t := time.Now()
	fmt.Println(t.Date())
	fmt.Println(t.Year())
	fmt.Println(t.YearDay())
	fmt.Println(t.Month())
	fmt.Println(t.ISOWeek())
	fmt.Println(t.Weekday())
	fmt.Println(t.Day())
	fmt.Println(t.Clock())
	fmt.Println(t.Hour())
	fmt.Println(t.Minute())
	fmt.Println(t.Second())
	fmt.Println(t.Nanosecond())
	fmt.Println(t.Unix())
	fmt.Println(t.UnixMilli())
	fmt.Println(t.UnixMicro())
	fmt.Println(t.UnixNano())
  fmt.Println(t.String())
	fmt.Println(t.Location())
}

时间处理方法(比较、判断、解析)

  • func (t Time) Format(layout string) string,将时间格式化为指定的格式。
  • func (t Time) Add(d Duration) Time,加上指定的时间。
  • func (t Time) AddDate(years int, months int, days int) Time,返回将给定的年、月和日数加到 t 上后所对应的时间点。
  • func (t Time) Sub(u Time) Duration,返回两个时间点之间的时间差。
  • func (t Time) Truncate(d Duration) Time,截断指定的时间。
  • func (t Time) Round(d Duration) Time,将时间四舍五入到指定的时间。
  • func (t Time) Equal(u Time) bool,判断两个时间点是否相等。
  • func (t Time) After(u Time) bool,判断 t 时间点是否在 u 时间点后面。
  • func (t Time) Before(u Time) bool,判断 t 时间点是否在 u 时间点前面。

其他方法就不一一说明了,可以参考官方文档详细查看。

到此这篇关于详解Golang time包中的结构体time.Time的文章就介绍到这了,更多相关Golang结构体time.Time内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang获取网卡信息操作

    golang获取网卡信息操作

    这篇文章主要介绍了golang获取网卡信息操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go操作Kafka和Etcd方法详解

    Go操作Kafka和Etcd方法详解

    这篇文章主要为大家介绍了Go操作Kafka和Etcd方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Go语言中Seeker接口的用法详解

    Go语言中Seeker接口的用法详解

    Go语言标准库中的io包提供了一系列接口,用于处理各种I/O操作,其中Seeker接口在处理大文件或需要随机访问的场景中非常有用,本文将结合具体案例,详细介绍Go语言中io包的Seeker接口的用法,需要的朋友可以参考下
    2024-10-10
  • 如何使用大学教育邮箱下载golang等软件(推荐)

    如何使用大学教育邮箱下载golang等软件(推荐)

    这篇文章主要介绍了如何使用大学教育邮箱下载goland等软件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 一文搞懂Go语言中文件的读写与创建

    一文搞懂Go语言中文件的读写与创建

    这篇文章主要为大家详细介绍了Go语言中文件是如何实现读写与创建的,文中的示例代码讲解详细,对我们学习Go语言有一定帮助,需要的可以参考一下
    2022-07-07
  • Go语言中的反射原理解析与应用

    Go语言中的反射原理解析与应用

    反射(Reflection)是计算机科学中的一个重要概念,它允许程序在运行时检查变量和值,获取它们的类型信息,并且能够修改它们,本文将结合实际案例,详细介绍Go语言中反射的基本概念、关键函数以及使用场景,需要的朋友可以参考下
    2024-10-10
  • go带缓冲chan实现消息队列功能

    go带缓冲chan实现消息队列功能

    本文主要介绍了go带缓冲chan实现消息队列功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 浅谈Golang内存逃逸

    浅谈Golang内存逃逸

    本文主要介绍了Golang内存逃逸,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 一文帮你搞懂Go面试中常问的channel问题

    一文帮你搞懂Go面试中常问的channel问题

    channel是Golang面试时经常会问到的问题,所以这篇文章为大家整理了channel常考的一些问题以及回答,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-06-06
  • go gin中间件关于 c.next()、c.abort()和return的使用小结

    go gin中间件关于 c.next()、c.abort()和return的使用小结

    中间件的执行顺序是按照注册顺序执行的,中间件可以通过 c.abort() + retrurn 来中止当前中间件,后续中间件和处理器的处理流程, 这篇文章给大家介绍go gin中间件关于 c.next()、c.abort()和return的使用小结,感兴趣的朋友跟随小编一起看看吧
    2024-03-03

最新评论