Golang time时间基础操作

本文介绍了如何使用Go语言进行时间戳的获取与转换,包括获取毫秒级和秒级时间戳的方法,将时间戳转换为日期格式,实现日期的加减运算,以及计算两个时间点之间的差值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//获取毫秒时间戳
fmt.Println(time.Now().UnixNano() / int64(time.Millisecond))
fmt.Println(time.Now().UnixNano() / 1000000)

//获取秒时间戳,可直接去除毫秒时间戳后三位
fmt.Println(time.Now().Unix())

//时间戳转换为日期格式,需用10位时间戳转换
fmt.Println(time.Unix(1459217089, 0))

//当前日期减去一小时
time.Now().Add((-1)*time.Hour)

//获取两时间相差时间点
tm1, _ := time.Parse("2006-01-02 15:04:05", lastchange)
tm2, _ := time.Parse("2006-01-02 15:04:05", time.Now().Format("2006-01-02 15:04:05"))
diffMinutes := tm2.Sub(tm1).Minutes()

### Golang 中 `time` 包的用法与示例 Golang 的 `time` 包提供了丰富的功能来处理时间相关的操作,包括获取当前时间、计算时间差、定时器以及间隔执行等功能。以下是关于该包的些常见用法及其例子。 #### 获取当前时间 通过调用 `time.Now()` 方法可以轻松获得当前的时间戳对象。此方法返回的是个 `Time` 类型的对象,包含了日期和时间的信息。 ```go now := time.Now() fmt.Println("Current Time:", now) ``` #### 时间格式化 为了将时间转换为字符串形式或者解析字符串到时间对象,可以利用预定义布局常量如 `time.RFC3339` 或者自定义布局模式来进行格式化。 ```go formattedTime := now.Format(time.RFC3339) fmt.Println("Formatted Time (RFC3339):", formattedTime) customLayout := "02-Jan-2006 15:04" customFormattedTime := now.Format(customLayout) fmt.Println("Custom Formatted Time:", customFormattedTime) ``` #### 计算两个时间之间的差异 可以通过简单的法运算符 `-` 来得到两个时间点之间相差的具体秒数或者其他单位的数量。 ```go later := now.Add(5 * time.Minute) // 增加五分钟后的时刻 diff := later.Sub(now).Minutes() fmt.Printf("Difference in Minutes:%v\n", diff) ``` #### 使用 Timer 和 Ticker 实现延迟或周期性任务调度 对于需要等待时间再继续运行的任务来说,Timer 是非常有用的工具;而如果希望每隔固定时间段重复做某件事,则应该考虑使用Ticker[^1]。 ```go // 创建个新的计时器设置为两秒钟超时. timer := time.NewTimer(2 * time.Second) <-timer.C fmt.Println("Two seconds have passed") ticker := time.NewTicker(500 * time.Millisecond) done := make(chan bool) go func(){ for t:= range ticker.C{ fmt.Println("Tick at ",t) } }() time.Sleep(1600*time.Millisecond) ticker.Stop() close(done) fmt.Println("Ticker stopped.") ``` 尽管上述内容涵盖了大部分基本需求,但在实际开发过程中还可能遇到更复杂的情况比如跨时区调整等问题[^2], 这就需要进步深入研究官方文档并结合具体应用场景灵活运用了.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值