Documentation
¶
Overview ¶
Package compact_time provides encoding and decoding mechanisms for the compact time format (https://github.com/kstenerud/compact-time), as well as basic conversion functions to/from the go time package.
Basic validation is performed when decoding data, enough to ensure that it isn't blatantly wrong (such as invalid area/location values, latitude 500, december 54th, etc). However, it does not do more nuanced checks such as on which years February 29th is valid, or when leap seconds are allowed. It also doesn't check for impossible timestamp values such as 2011-03-13/02:10:00/Los_Angeles.
Index ¶
- Constants
- Variables
- func Encode(time *Time, dst []byte) (bytesEncoded int, isComplete bool)
- func EncodedSize(time *Time) int
- type Time
- func AsCompactTime(src gotime.Time) (*Time, error)
- func DecodeDate(src []byte) (time *Time, bytesDecoded int, err error)
- func DecodeTime(src []byte) (time *Time, bytesDecoded int, err error)
- func DecodeTimestamp(src []byte) (time *Time, bytesDecoded int, err error)
- func NewDate(year, month, day int) (*Time, error)
- func NewTime(hour, minute, second, nanosecond int, areaLocation string) (*Time, error)
- func NewTimeLatLong(hour, minute, second, nanosecond, latitudeHundredths, longitudeHundredths int) (*Time, error)
- func NewTimestamp(year, month, day, hour, minute, second, nanosecond int, areaLocation string) (*Time, error)
- func NewTimestampLatLong(...) (*Time, error)
- func (this *Time) AsGoTime() (result gotime.Time, err error)
- func (this *Time) InitDate(year, month, day int) error
- func (this *Time) InitTime(hour, minute, second, nanosecond int, areaLocation string) error
- func (this *Time) InitTimeLatLong(hour, minute, second, nanosecond, latitudeHundredths, longitudeHundredths int) error
- func (this *Time) InitTimestamp(year, month, day, hour, minute, second, nanosecond int, areaLocation string) error
- func (this *Time) InitTimestampLatLong(...) error
- func (this *Time) String() string
- type TimeType
- type TimezoneType
Constants ¶
const ( TypeDate = TimeType(iota) TypeTime TypeTimestamp )
const ( TypeZero = TimezoneType(iota) TypeLocal TypeAreaLocation TypeLatitudeLongitude )
const MaxEncodeLength = 50
Maximum byte length that this library will encode
Variables ¶
var ErrorIncomplete = fmt.Errorf("Compact time value is incomplete")
Functions ¶
func Encode ¶ added in v1.0.1
Encode a time value (date, time, or timestamp). Returns the number of bytes encoded, or the number of bytes it attempted to encode. Returns isComplete=true if there was enough room in dst. Returns an error if something went wrong other than there not being enough room.
func EncodedSize ¶ added in v1.0.1
Get the number of bytes that would be required to encode this time value.
Types ¶
type Time ¶ added in v1.0.1
type Time struct {
Year int
Nanosecond uint32
LatitudeHundredths int16
LongitudeHundredths int16
Month uint8
Day uint8
Hour uint8
Minute uint8
Second uint8
TimeType TimeType
TimezoneType TimezoneType
AreaLocation string
ShortAreaLocation string
}
func DecodeDate ¶
Decode a date. Warning: The date fields will not be validated! Please call time.Validate()! Returns the number of bytes decoded, or the number of bytes it attempted to decode.
func DecodeTime ¶
Decode a time value. Warning: The date fields will not be validated! Please call time.Validate()! Returns the number of bytes decoded, or the number of bytes it attempted to decode.
func DecodeTimestamp ¶
Decode a timestamp. Warning: The date fields will not be validated! Please call time.Validate()! Returns the number of bytes decoded, or the number of bytes it attempted to decode.
func NewTime ¶ added in v1.0.1
Create a new time. If areaLocation is empty, UTC is assumed. areaLocation is not validated against any timezone databases.
func NewTimeLatLong ¶ added in v1.0.1
func NewTimestamp ¶ added in v1.0.1
func NewTimestamp(year, month, day, hour, minute, second, nanosecond int, areaLocation string) (*Time, error)
Create a new timestamp. If areaLocation is empty, UTC is assumed. areaLocation is not validated against any timezone databases.
func NewTimestampLatLong ¶ added in v1.0.1
func (*Time) AsGoTime ¶ added in v1.0.1
Convert this time into a standard go time. Note: Go time doesn't support latitude/longitude time zones. Attempting to
convert this type of time zone will result in an error.
Note: Converting to go time will validate area/location time zone (if any)
func (*Time) InitTime ¶ added in v1.0.1
Init a time. If areaLocation is empty, UTC is assumed. areaLocation is not validated against any timezone databases.
func (*Time) InitTimeLatLong ¶ added in v1.0.1
func (*Time) InitTimestamp ¶ added in v1.0.1
func (this *Time) InitTimestamp(year, month, day, hour, minute, second, nanosecond int, areaLocation string) error
Init a timestamp. If areaLocation is empty, UTC is assumed. areaLocation is not validated against any timezone databases.
func (*Time) InitTimestampLatLong ¶ added in v1.0.1
type TimezoneType ¶ added in v1.0.1
type TimezoneType uint8