🕰️ Synchro: Timezone-typesafe date and time framework for Go
This is inspired by Rust chrono
Features
- Timezone-typesafe date and time handling
- Easy conversion between time zones
- Support for common date and time operations
- Compatible with the standard
time
package - Full compatible with ISO8601 (GoDoc)
- ✅ Dates
- Years
- Calendar dates
- Week dates
- Quarter dates
- Ordinal dates
- ✅ Times
- ✅ Combined date and time representations
- ✅ Durations
- ✅ Time intervals
- Repeating intervals
- Note: This package can be used as civil time.
- Civil time is a time-zone-independent representation of time that follows the rules of the proleptic Gregorian calendar with exactly 24-hour days, 60-minute hours, and 60-second minutes.
- ✅ Dates
Installation
To install Synchro, use go get
:
go get github.com/Code-Hex/synchro
Synopsis
To use Synchro, import it in your Go code:
package main
import (
"fmt"
"github.com/Code-Hex/synchro"
"github.com/Code-Hex/synchro/tz"
)
func main() {
// The current UTC time is fixed to `2023-09-02 14:00:00`.
utcNow := synchro.Now[tz.UTC]()
fmt.Println(utcNow)
jstNow := synchro.Now[tz.AsiaTokyo]()
fmt.Println(jstNow)
// Output:
// 2009-11-10 23:00:00 +0000 UTC
// 2009-11-11 08:00:00 +0900 JST
}
https://go.dev/play/p/Ql3CM7NLfj0
Please refer to the numerous usage examples on GoDoc for reference.
Utilities
We also have a wide range of very useful utilities!!
If you have a feature request, please open an issue. It would be great if you could provide relevant examples or links that could be helpful.
- In
- ConvertTz
- NowContext
- Quarter
- Semester
- StartOfMonth
- EndOfMonth
- StartOfQuarter
- EndOfQuarter
- StartOfSemester
- EndOfSemester
- StartOfWeek
- EndOfWeek
- StartOfYear
- EndOfYear
- IsBetween
- IsLeapYear
- DiffInCalendarDays
- Change
Change
allows you to specify the date and time components you want to change and make modifications.
- Advance
Advance
allows you to specify the date and time components you want to increment and make modifications.
- Period
- Strptime
- Strftime
TODO
- Support database/sql
- Support i18n
- Optimization
Contributing
Contributions to Synchro are welcome!
To contribute, please fork the repository and submit a pull request.
License
Synchro is licensed under the MIT License. See LICENSE for more information.