Golang时间操作

文章目录

时间格式化

golang的时间格式化非常奇怪,正常的时间格式化,比如java是yyyyMMdd这种,而python是%Y,%m等格式。

大部分语言都是这两种类型,比如mysql就和python一致,excel和java一致。

但是golang的时间格式化,就完全不一样了。它要求你记住golang的诞生时间,2006年1月2日,15点04分05秒。所以它的时间格式化是这样的:

go 复制代码
package main

import (
	"fmt"
	"time"
)

func main() {
	currentTime := time.Now()
	formattedTime := currentTime.Format("2006-01-02 15:04:05.000")
	fmt.Println("Formatted time:", formattedTime)
}

不过也挺好记忆的,12345,1月2日3点4分5秒,不过这个3点是下午3点,而不是上午3点。

输出结果:

Formatted time: 2024-11-20 19:46:11.083

解析时间

解析时间用time.Parse()函数,如以下例子:

go 复制代码
package main
package main

import (
	"fmt"
	"time"
)

func main() {
	// printNow()
	t, err := time.Parse("2006-01-02 15:04:05.000", "2023-07-28 19:03:49.123")
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(t)
}

golang的时间加减操作

golang的时间是只读的,不能修改。如果要加减时间,需要使用time.Add()函数,返回一个新的时间。

go 复制代码
package main

import (
	"fmt"
	"time"
)

func main() {
	// printNow()
	// ParseTime()
	now := time.Now()
	other := now.Add(time.Hour * 5)
	fmt.Println(now, other)
}

输出结果:

2024-11-20 19:59:48.7280168 +0800 CST m=+0.000000001 2024-11-21 00:59:48.7280168 +0800 CST m=+18000.000000001

日期加减操作

日期加减操作,需要使用time.AddDate()函数。该函数有三个参数,第一个是年数,第二个是月数,第三个是天数。

go 复制代码
package main

import (
	"fmt"
	"time"
)

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

	// 加5天
	fiveDaysLater := now.AddDate(0, 0, 5)
	fmt.Println("5天后:", fiveDaysLater)

	// 减3天
	threeDaysBefore := now.AddDate(0, 0, -3)
	fmt.Println("3天前:", threeDaysBefore)
}

输出结果:

shell 复制代码
当前时间: 2024-11-20 20:21:56.5692588 +0800 CST m=+0.001002701
5天后: 2024-11-25 20:21:56.5692588 +0800 CST
3天前: 2024-11-17 20:21:56.5692588 +0800 CST

时区操作

time.In可以转换时区,FixedZone()函数可以设置时区。如以下代码:

go 复制代码
package main

import (
	"fmt"
	"time"
)

func main() {
	// printNow()
	// ParseTime()
	// TimeAdd()
	// 转换时区
	now := time.Now()
	now = now.In(time.FixedZone("UTC$$$$", 0))
	fmt.Println(now)
}

对于带时区的字符串如何解析,在formart.go文件中,有这么一行源代码:

go 复制代码
RFC3339     = "2006-01-02T15:04:05Z07:00"

所以time.RFC3339就可以解析iso格式的带时区字符串。

相关推荐
XDHCOM8 分钟前
Python os.system() 和 subprocess 怎么选?运行系统命令哪个更好用?
开发语言·网络·python
雨墨✘19 分钟前
golang如何实现设备指纹识别_golang设备指纹识别实现详解
jvm·数据库·python
yfndsb27 分钟前
从入门到落地:OpenClaw 全面介绍与全平台本地部署保姆级教程
人工智能·python·ai
qq_2837200527 分钟前
Python Web 开发:Flask 快速入门教程
python·flask·web
加勒比海带6641 分钟前
目标检测算法——低空智能实验室开放数据集汇总附下载链接【点赞+收藏】
大数据·图像处理·人工智能·python·深度学习·目标检测·计算机视觉
xixixi777771 小时前
AI自主挖洞 + 通信网络扩散:全域风险指数级放大,如何构建密码-沙箱-终端联动闭环?
开发语言·网络·人工智能·ai·大模型·php·通信
小碗羊肉1 小时前
【从零开始学Java | 第三十五篇】IO流-字节流
java·开发语言
PILIPALAPENG1 小时前
第2周 Day 4:英语 Agent Web 版上线:从命令行到浏览器
前端·人工智能·python
csbysj20201 小时前
SOAP Fault 元素
开发语言
Soari1 小时前
Ziggo-CaaS-Switch软件配置: undefined reference to pthread_create
java·开发语言·fpga开发·tsn·zynq·交换机配置