【Go】详解time包中常用的函数和类型

目录

常用的函数

time.Now()

设置时区

 获取当前时间的前一天0点

时间加减运算


常用的函数

Go 语言的 time 包提供了日期和时间的处理功能,允许你在程序中进行时间相关的操作,包括获取当前时间、格式化时间、解析时间、计算时间间隔等。

以下是 time 包中一些常用的函数和类型:

  1. time.Now() 函数:返回当前的本地时间。
  2. time.Parse(layout, value string) 函数:将一个格式化的时间字符串解析为一个 time.Time 类型的值。
  3. time.Format(layout string) 方法:将一个时间格式化为指定布局的字符串。
  4. time.Duration 类型:表示时间间隔,以纳秒为基本单位。
  5. time.Sleep(duration) 函数:暂停程序的执行一段时间。

下面是一些常用的示例:

package main

import (
	"fmt"
	"time"
)

func main() {
	// 获取当前时间
	now := time.Now()
	fmt.Println("当前时间:", now)

	// 格式化时间为字符串
	timeStr := now.Format("2006-01-02 15:04:05")
	fmt.Println("格式化后的时间:", timeStr)

	// 解析字符串为时间
	parseTime, _ := time.Parse("2006-01-02", "2023-08-04")
	fmt.Println("解析后的时间:", parseTime)

	// 计算时间间隔
	duration := time.Since(now)
	fmt.Println("时间间隔:", duration)

	// 暂停程序执行一段时间
	time.Sleep(2 * time.Second)
	fmt.Println("2秒后的时间:", time.Now())
}

time.Now()

package main

import (
	"fmt"
	"time"
)

func main() {
	// 获取当前时间
	now := time.Now()
	fmt.Println("当前时间:", now)

	year := now.Year()     //年
	month := now.Month()   //月
	day := now.Day()       //日
	hour := now.Hour()     //小时
	minute := now.Minute() //分钟
	second := now.Second() //秒
	fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)
}

设置时区

 获取当前时间的前一天0点

    // 获取当前日期
    t := time.Now().UTC()
    // 计算前一天的日期
    t = t.AddDate(0, 0, -1)
    // 设置时间为零点
    t = time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())
    // 输出结果
    fmt.Println(t)

时间加减运算

在 Go 语言中,可以使用 time 包进行时间的加减运算。time.Duration 类型表示了时间间隔,可以通过加法和减法操作来对时间进行加减运算。

下面是一些常见的时间加减运算示例:

package main

import (
	"fmt"
	"time"
)

func main() {
	// 获取当前时间
	now := time.Now()
	fmt.Println("当前时间:", now)

	// 加上一段时间间隔
	afterOneHour := now.Add(1 * time.Hour)
	fmt.Println("一小时后的时间:", afterOneHour)

	// 减去一段时间间隔
	beforeOneDay := now.Add(-24 * time.Hour)
	fmt.Println("一天前的时间:", beforeOneDay)

	// 计算两个时间点之间的时间间隔
	duration := afterOneHour.Sub(beforeOneDay)
	fmt.Println("时间间隔:", duration)

	// 执行相对时间的加减运算
	tenMinutesLater := now.Add(10 * time.Minute)
	fiveHoursEarlier := tenMinutesLater.Add(-5 * time.Hour)
	fmt.Println("十分钟后五小时前的时间:", fiveHoursEarlier)
}

 在示例中,我们使用 Add() 方法对时间进行加法运算,可以传入正数表示加上一段时间间隔,也可以传入负数表示减去一段时间间隔。使用 Sub() 方法可以计算两个时间点之间的时间间隔。

需要注意的是,加减的单位必须是 time.Duration 类型。常用的时间单位有纳秒(time.Nanosecond)、微秒(time.Microsecond)、毫秒(time.Millisecond)、秒(time.Second)、分钟(time.Minute)、小时(time.Hour)等。可以通过乘法和除法操作来得到特定单位的时间间隔。

另外,还可以使用 time.AddDate() 方法对年、月、日进行加减运算,根据需求选择适合的方法进行时间的加减操作。

猜你喜欢

转载自blog.csdn.net/fanjufei123456/article/details/129789589
今日推荐