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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9f7a07a Â· Feb 25, 2024

History

32 Commits
Feb 25, 2024
Oct 6, 2020
Jun 23, 2020
Feb 25, 2024
Dec 15, 2019
Feb 25, 2024
Feb 25, 2024
Jun 25, 2020
Jan 27, 2024
Jan 27, 2024
Dec 22, 2019
Feb 25, 2024
Jan 27, 2024
Feb 25, 2024
Feb 25, 2024
Jan 27, 2024
Jan 27, 2024
Oct 21, 2020
Oct 21, 2020
Feb 25, 2024
Oct 21, 2020
Oct 21, 2020
Oct 21, 2020

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