golang 日期时间处理

本文详细介绍了如何在Go语言中处理时间,包括显示当前时间、格式化时间、转换时间戳、计算日期间隔以及定时任务的实现。通过实例展示了时间戳转换、日期加减运算和时间格式化的方法。

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

package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println(time.Now())                                              //显示时间:2019-03-15 17:49:29.0648086 +0800 CST m=+0.005000301
    fmt.Println(time.Now().Format("2006---01-02 15:04:05"))              //显示时间:2019---03-15 17:52:13  ,奇葩的2006-01-02 15:04:05,而不是yy-m-d H:m:s
    fmt.Println(time.Now().Unix())                                       //时间戳 1552643533 // seconds since 1970
    t, _ := time.Parse("2006---01-02 15:04:05", "2019---03-15 17:52:13") //格式化UTC时间转时间戳,还可用time.Date,ParseInLocation
    fmt.Println(t.Unix())
    //上月第一天,参考https://www.golangtc.com/t/51bd288c320b5264b800001c中navygong的代码
    //比如今天,7.31,因为没有6.31,简单用AddDate(0, -1, 0),不是6月,而是7.1号。因此用下面的代码:
    year, month, _ := time.Now().Date()
    thisMonthFirstDay := time.Date(year, month, 1, 0, 0, 0, 0, t.Location()) //本月第一天
    fmt.Println(thisMonthFirstDay.AddDate(0, -1, 0))                         //上月第一天

    fmt.Println(thisMonthFirstDay.AddDate(0, 1, -1))                    //同理,本月最后一天
    thisYearFirstDay := time.Date(year, 1, 1, 0, 0, 0, 0, t.Location()) //同理,本年第一天
    fmt.Println(thisYearFirstDay.AddDate(-1, 0, 0))                     //去年第一天
    fmt.Println(time.Now().Weekday())                                   //今天是周几?Friday
    fmt.Println(int(time.Now().Weekday()))                              //5
    fmt.Println(time.Now().Add(-time.Minute * 10))                      //10分钟前的时间
    //明天零点的时间戳,参考https://blog.youkuaiyun.com/liangguangchuan/article/details/76922548
    timeStr := time.Now().Format("2006-01-02")
    //使用Parse 默认获取为UTC时区 需要获取本地时区 所以使用ParseInLocation
    t5, _ := time.ParseInLocation("2006-01-02 15:04:05", timeStr+" 23:59:59", time.Local)
    t6, _ := time.ParseInLocation("2006-01-02", timeStr, time.Local)
    fmt.Println(t5.Unix() + 1)
    fmt.Println(t6.AddDate(0, 0, 1).Unix())

}

补充说明:注意time.Now()返回的是本地时间。

另, 参考:https://www.jianshu.com/p/480ac51a22c0

补充:整形转日期字符串

    t0 := int64(1553254972)
    t1 := time.Unix(t0, 0).Format("2006-01-02 15:04:05")
    fmt.Println(t1)

要定时执行的话,参考之前的一篇:  Go语言中定时器cron的基本使用

转载于:https://www.cnblogs.com/pu369/p/10539337.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值