GitHub - vtopc/epoch: Contains primitives for marshaling/unmarshaling Unix timestamp/epoch to/from built-in time.Time type in JSON (original) (raw)

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.:

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! πŸ‡ΊπŸ‡¦