1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
# timefmt-go
[](https://github.com/itchyny/timefmt-go/actions)
[](https://goreportcard.com/report/github.com/itchyny/timefmt-go)
[](https://github.com/itchyny/timefmt-go/blob/main/LICENSE)
[](https://github.com/itchyny/timefmt-go/releases)
[](https://pkg.go.dev/github.com/itchyny/timefmt-go)
### Efficient time formatting library (strftime, strptime) for Golang
This is a Go language package for formatting and parsing date time strings.
```go
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`](https://linux.die.net/man/3/strftime) and
[`man 3 strptime`](https://linux.die.net/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.
- `AppendFormat` is provided for reducing allocations.
- `Parse` (`strptime`) allows to parse
- composed directives like `%F %T`,
- century years like `%C %y`,
- week names like `%A` `%a` (parsed results are discarded).
- `ParseInLocation` is provided for configuring the default location.

## Bug Tracker
Report bug at [Issuesă»itchyny/timefmt-go - GitHub](https://github.com/itchyny/timefmt-go/issues).
## Author
itchyny (https://github.com/itchyny)
## License
This software is released under the MIT License, see LICENSE.
|