timefmt-go
Efficient time formatting library (strftime, strptime) for Golang
This is a Go language package for formatting and parsing date time strings.
package main import ( "fmt" "log" "github.com/itchyny/timefmt-go" ) func main() { t, err := timefmt.Parse("2020/07/24 09:07:29", "%Y/%m/%d %H:%M:%S") if err != nil { log.Fatal(err) } fmt.Println(t) // 2020-07-24 09:07:29 +0000 UTC str := timefmt.Format(t, "%Y/%m/%d %H:%M:%S") fmt.Println(str) // 2020/07/24 09:07:29 str = timefmt.Format(t, "%a, %d %b %Y %T %z") fmt.Println(str) // Fri, 24 Jul 2020 09:07:29 +0000 }
Please refer to man 3 strftime and
man 3 strptime for formatters.
As an extension, %f directive is supported for zero-padded microseconds, which originates from Python.
Note that E and O modifier characters are not supported.
Comparison to other libraries
- This library
- provides both formatting and parsing functions in pure Go language,
- depends only on the Go standard libraries not to grow up dependency.
Format(strftime) implements glibc extensions including- width specifier like
%6Y %10B %4Z(limited to 1024 bytes), - omitting padding modifier like
%-y-%-m-%-d, - space padding modifier like
%_y-%_m-%_d, - upper case modifier like
%^a %^b, - swapping case modifier like
%#Z, - time zone offset modifier like
%:z %::z %:::z, - and its performance is very good.
- width specifier like
AppendFormatis provided for reducing allocations.Parse(strptime) allows to parse- composed directives like
%F %T, - century years like
%C %y, - week directives like
%W %aand%G-W%V-%u.
- composed directives like
ParseInLocationis provided for configuring the default location.
Bug Tracker
Report bug at Issuesă»itchyny/timefmt-go - GitHub.
Author
itchyny (https://github.com/itchyny)
License
This software is released under the MIT License, see LICENSE.
