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! 🇺🇦