go时间处理

作者: 百里江山 | 来源:发表于2020-04-03 11:49 被阅读0次

推荐一个非常优秀的包 github.com/jinzhu/now

基本用法

time.Now() // 2013-11-18 17:51:49.123456789 Mon

BeginningOfMinute() // 2013-11-18 17:51:00 Mon
BeginningOfHour()   // 2013-11-18 17:00:00 Mon
BeginningOfDay()    // 2013-11-18 00:00:00 Mon
BeginningOfWeek()   // 2013-11-17 00:00:00 Sun

WeekStartDay = time.Monday // Set Monday as first day
BeginningOfWeek()          // 2013-11-18 00:00:00 Mon
BeginningOfMonth()         // 2013-11-01 00:00:00 Fri
BeginningOfQuarter()       // 2013-10-01 00:00:00 Tue
BeginningOfYear()          // 2013-01-01 00:00:00 Tue

EndOfMinute() // 2013-11-18 17:51:59.999999999 Mon
EndOfHour()   // 2013-11-18 17:59:59.999999999 Mon
EndOfDay()    // 2013-11-18 23:59:59.999999999 Mon
EndOfWeek()   // 2013-11-23 23:59:59.999999999 Sat

WeekStartDay = time.Monday // Set Monday as first day
EndOfWeek()                // 2013-11-24 23:59:59.999999999 Sun
EndOfMonth()               // 2013-11-30 23:59:59.999999999 Sat
EndOfQuarter()             // 2013-12-31 23:59:59.999999999 Tue
EndOfYear()                // 2013-12-31 23:59:59.999999999 Tue

// Use another time
t := time.Date(2013, 02, 18, 17, 51, 49, 123456789, time.UTC)
With(t).EndOfMonth() // 2013-02-28 23:59:59.999999999 Thu

Monday()      // 2013-11-18 00:00:00 Mon
Sunday()      // 2013-11-24 00:00:00 Sun
EndOfSunday() // 2013-11-24 23:59:59.999999999 Sun

使用中遇到时区问题

const YYYYMMDD        = "2006-01-02"                  // 日期格式
time.Local, _ = time.LoadLocation("Asia/Shanghai")
t, err := time.Parse(YYYYMMDD, "2020-04-30")
if err != nil {
    panic(err)
}
at1 := now.With(t).EndOfDay()
at2 := now.With(now.New(t).In(time.Local)).EndOfDay()
fmt.Printf("at1:%+v\nat2:%+v\n", at1, at2)

以上代码输出时区不一致

at1:2020-04-30 23:59:59.999999999 +0000 UTC  // 格林时区,默认的时区
at2:2020-04-30 23:59:59.999999999 +0800 CST // 中国时区,注意后面有一个+0800,东八区时间

如果要改变时区的话,需要自己指定时区

// 输出某一天的北京时间 t是表示你的某一天时间,见上面代码。
now.With(now.New(t).In(time.Local)).EndOfDay()
// 输出当前的北京时间
now.With(now.New(time.Now()).In(time.Local)).EndOfDay()

相关文章

  • go时间处理

    推荐一个非常优秀的包 github.com/jinzhu/now 基本用法 使用中遇到时区问题 以上代码输出时区不...

  • go 数据库时间处理

  • go 中的时间相关处理

    时区 GMT(Greenwich Mean Time),格林威治平时。GMT 根据地球的自转和公转来计算时间,它规...

  • Go time

    Go time Go中提供了很多关于时间处理的内容,这篇文章来主讲讲解下时间上的内容。 最外层可以直接使用的方法 ...

  • 异常处理

    Go 的异常处理不同于其他语言使用的结构 对于 go 的异常处理, 使用 defer, panic, recove...

  • Go 语言基础——错误处理

    学习目标 掌握错误处理 掌握自定义错误处理 掌握defer关键字的使用 错误处理 GO没有异常处理机制 Go语言引...

  • go语言strings库总结

    最近由于用go做字符串处理,用到了go的strings库,借此对go strings库做个总结,将go strin...

  • 异常处理

    异常处理 Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go...

  • (译)Go 语言中异常处理的艺术

    原文链接:The Art of Error Handling in Go Go 语言的异常处理与其他语言截然不同,...

  • 2021-06-08

    Go的编程模式,错误处理 引入了其他语言的错误处理模式,最后,说明Go错误处理的好处。主要是将函数的入参、出参、错...

网友评论

    本文标题:go时间处理

    本文链接:https://www.haomeiwen.com/subject/sqchphtx.html