Skip to content
/ epoch Public

Contains primitives for marshaling/unmarshaling Unix timestamp/epoch to/from built-in time.Time type in JSON

License

Notifications You must be signed in to change notification settings

vtopc/epoch

Repository files navigation

Stand With Ukraine

epoch

Mentioned in Awesome Go Godoc Reference build codecov goreportcard

Contains primitives for marshaling/unmarshaling Unix timestamp/epoch to/from built-in time.Time type in JSON.

Seconds

Seconds since the Epoch(Unix time), e.g.:

 {"timestamp":1136239445}

Inherits built-in time.Time type, thus has all it methods, but has custom serializer and deserializer(converts integer into built-in time.Time and vice versa).

Usage Example

package main import ( "encoding/json" "fmt" "github.com/vtopc/epoch" ) type Request struct { Timestamp epoch.Seconds `json:"timestamp"` } func main() { var v Request err := json.Unmarshal([]byte(`{"timestamp":1136239445}`), &v) if err != nil { panic(err)	} fmt.Printf("%+v\n", v) // Output: {Timestamp:2006-01-03 00:04:05 +0200 EET} // Also as epoch.Seconds inherits all time.Time's methods one can do next: fmt.Println(v.Timestamp.Year()) // Output: 2006 fmt.Println(v.Timestamp.UTC().String()) // Output: 2006-01-02 22:04:05 +0000 UTC }

Milliseconds

Same as epoch.Seconds, but for Epoch(Unix time) in milliseconds, e.g.:

 {"timestamp":1136239445999}

StrSeconds

Same as epoch.Seconds, but for strings, e.g.:

 {"timestamp":"1136239445"}

StrMilliseconds

Same as epoch.Milliseconds, but for strings, e.g.:

 {"timestamp":"1136239445999"}

FloatMS

Integer part of timestamp represents seconds and fractional - milliseconds since the Epoch(Unix time), e.g.:

 {"timestamp":1136239445.999}

Installation

go get github.com/vtopc/epoch@latest

This will update yours go.mod file.

Additional terms of use for users from russia and Belarus

By using the code provided in these repositories you agree with the following:

Glory to Ukraine! 🇺🇦