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)
|
|||
|
)
|