37 lines
1.5 KiB
Go
37 lines
1.5 KiB
Go
package internal
|
||
|
||
import "time"
|
||
|
||
// Timezones used for local datetime, date, and time TOML types.
|
||
//
|
||
// The exact way times and dates without a timezone should be interpreted is not
|
||
// well-defined in the TOML specification and left to the implementation. These
|
||
// defaults to current local timezone offset of the computer, but this can be
|
||
// changed by changing these variables before decoding.
|
||
//
|
||
// TODO:
|
||
// Ideally we'd like to offer people the ability to configure the used timezone
|
||
// by setting Decoder.Timezone and Encoder.Timezone; however, this is a bit
|
||
// tricky: the reason we use three different variables for this is to support
|
||
// round-tripping – without these specific TZ names we wouldn't know which
|
||
// format to use.
|
||
//
|
||
// There isn't a good way to encode this right now though, and passing this sort
|
||
// of information also ties in to various related issues such as string format
|
||
// encoding, encoding of comments, etc.
|
||
//
|
||
// So, for the time being, just put this in internal until we can write a good
|
||
// comprehensive API for doing all of this.
|
||
//
|
||
// The reason they're exported is because they're referred from in e.g.
|
||
// internal/tag.
|
||
//
|
||
// Note that this behaviour is valid according to the TOML spec as the exact
|
||
// behaviour is left up to implementations.
|
||
var (
|
||
localOffset = func() int { _, o := time.Now().Zone(); return o }()
|
||
LocalDatetime = time.FixedZone("datetime-local", localOffset)
|
||
LocalDate = time.FixedZone("date-local", localOffset)
|
||
LocalTime = time.FixedZone("time-local", localOffset)
|
||
)
|