Browse Source

now actually works right

master
Jeffrey Paul 5 months ago
parent
commit
e36581f205
3 changed files with 67 additions and 8 deletions
  1. +2
    -0
      Makefile
  2. +14
    -8
      util.go
  3. +51
    -0
      util_test.go

+ 2
- 0
Makefile View File

@@ -0,0 +1,2 @@
test:
go test

+ 14
- 8
util.go View File

@@ -70,16 +70,22 @@ func CopyFile(src, dst string) (err error) {
return
}

func TimeFromUnixMilli(ms int64) time.Time {
const millisInSecond = 1000
const nsInSecond = 1000000
return time.Unix(ms/int64(millisInSecond), (ms%int64(millisInSecond))*int64(nsInSecond))
const milliInSecond int64 = 1000
const microInSecond int64 = 1000000
const nsInSecond int64 = 1000000000

func TimeFromUnixMilli(input int64) time.Time {
var wholeSeconds int64 = input / milliInSecond
var remainderMillis int64 = input - (wholeSeconds * milliInSecond)
var remainderNano int64 = remainderMillis * 1000000
return time.Unix(wholeSeconds, remainderNano)
}

func TimeFromUnixMicro(ms int64) time.Time {
const microInSecond = 1000000
const nsInSecond = 1000000
return time.Unix(ms/int64(microInSecond), (ms%int64(microInSecond))*int64(nsInSecond))
func TimeFromUnixMicro(input int64) time.Time {
var wholeSeconds int64 = input / microInSecond
var remainderMicros int64 = input - (wholeSeconds * microInSecond)
var remainderNano int64 = remainderMicros * 1000
return time.Unix(wholeSeconds, remainderNano)
}

func TimeFromWebKit(input int64) time.Time {

+ 51
- 0
util_test.go View File

@@ -0,0 +1,51 @@
package goutil

import (
"testing"
"time"
)

func TestFromUnixMilli(t *testing.T) {
ms := 1542810446506
ts := TimeFromUnixMilli(int64(ms))
if ts.UTC().String() != "2018-11-21 14:27:26.506 +0000 UTC" {
t.Errorf("Expected time to be '2018-11-21 14:27:26.506 +0000 UTC' got '%s'", ts.UTC().String())
}
}

func TestFromUnixMicro(t *testing.T) {
ms := 1542810446506000
ts := TimeFromUnixMicro(int64(ms))
if ts.UTC().String() != "2018-11-21 14:27:26.506 +0000 UTC" {
t.Errorf("Expected time to be '2018-11-21 14:27:26.506 +0000 UTC' got '%s'", ts.UTC().String())
}
}

func TestFromWebkit(t *testing.T) {
var wk int64 = 13245202142853170
ts := TimeFromWebKit(wk)
expected := "2020-09-21 22:49:02.85317 +0000 UTC"
if ts.UTC().String() != expected {
t.Errorf("Expected time to be '%s' got '%s'", expected, ts.UTC().String())
}
}

func TestNowUnixMicro(t *testing.T) {
now := time.Now()
nownano := now.UnixNano()
nowmicro := nownano / 1000
ts := TimeFromUnixMicro(nowmicro)
if ts.UTC().String() != now.UTC().String() {
t.Errorf("Expected '%s' got '%s'", now.UTC().String(), ts.UTC().String())
}
}

func TestNowUnixMilli(t *testing.T) {
now := time.Now()
nownano := now.UnixNano()
nowmilli := nownano / 1000000
ts := TimeFromUnixMilli(nowmilli)
if ts.UTC().Format(time.StampMilli) != now.UTC().Format(time.StampMilli) {
t.Errorf("Expected '%s' got '%s'", now.UTC().String(), ts.UTC().String())
}
}

Loading…
Cancel
Save