golang时间处理工具箱now的使用详解
golang不像C#,Java这种高级语言,有丰富的语法糖供开发者很方便的调用。所以这便催生出很多的开源组件,通过使用这些第三方组件能够帮助我们在开发过程中少踩很多的坑。
时间处理是所有语言都要面对的一个问题,parse根据字符串转为date类型,tostring()将date类型转为定制化的字符串。
在实际使用过程中,parse的使用有一种不是很舒服的方法。
上源码
time1,_:=time.Parse("2006-01-02","2020-02-22") fmt.Println(time1) time2,_:=time.Parse("2006/01/02","2020/02/23") fmt.Println(time2)
不同的字符串格式要配置不同的模板才能正常解析,有没有一种方式类似C#中Datetime.parse("日期字符串"),一般输入的格式都能够被识别。
t,_:=now.Parse("2017/01/02") fmt.Println(t) t2,_:=now.Parse("2017-10-0217:30") fmt.Println(t2)
很方便的,不用再去记2006-01-0215:04:05这种奇怪的日期格式化了,真的想不明白。YYYY-MM-dd横行的如今,为什么作者要设计这么奇怪的日期格式化方式,百思不得奇解。
这只是now工具箱的一个功能,还有很多其他的附加功能等待大家探索。
基础使用
import"github.com/jinzhu/now" time.Now()//2013-11-1817:51:49.123456789Mon now.BeginningOfMinute()//2013-11-1817:51:00Mon now.BeginningOfHour()//2013-11-1817:00:00Mon now.BeginningOfDay()//2013-11-1800:00:00Mon now.BeginningOfWeek()//2013-11-1700:00:00Sun now.BeginningOfMonth()//2013-11-0100:00:00Fri now.BeginningOfQuarter()//2013-10-0100:00:00Tue now.BeginningOfYear()//2013-01-0100:00:00Tue
设置每星期的起始天数
国外习惯使用星期天作为一周的第一天,而国内内使用星期一作为每周的第一天。now的设置很简单,一行代码即可
now.WeekStartDay=time.Monday//SetMondayasfirstday,defaultisSunday now.BeginningOfWeek()//2013-11-1800:00:00Mon
这种时候,本星期的每一天就变成18号了
”有没有更简单的方式呢,我不想每次都还要配置一下,可能有时候忘记了呀“
“当然有”
now.Monday()//2013-11-1800:00:00Mon now.Sunday()//2013-11-2400:00:00Sun(NextSunday) now.EndOfSunday()//2013-11-2423:59:59.999999999Sun(EndofnextSunday)
直接.Monday().Sunday()便可。