Skip to content

Instantly share code, notes, and snippets.

@jftuga
Last active April 20, 2021 15:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jftuga/5c72414fe0f3a5e3ed5539af51416ccc to your computer and use it in GitHub Desktop.
Save jftuga/5c72414fe0f3a5e3ed5539af51416ccc to your computer and use it in GitHub Desktop.
comparing go date/time libraries
// compare_dt_libs.go
// comparing go date/time libraries
package main
import (
"fmt"
"github.com/btubbs/datetime"
"github.com/jinzhu/now"
"github.com/nleeper/goment"
"time"
)
func datetimeExample() {
fmt.Println()
fmt.Println()
fmt.Println("github.com/btubbs/datetime")
fmt.Println("==========================")
a := "2013-02-08T13:35:26"
b := "2013-02-08 13:35:26" // invalid
c := "2017/12/18 23:30:46" // invalid
d := "2021-04-08"
a1,_ := datetime.Parse(a, time.Local)
b1,_ := datetime.Parse(b, time.Local)
c1,_ := datetime.Parse(c, time.Local)
d1,_ := datetime.Parse(d, time.Local)
fmt.Printf("%T [%s] %v\n", a1, a1, a1.IsZero())
fmt.Printf("%T [%s] %v\n", b1, b1, b1.IsZero())
fmt.Printf("%T [%s] %v\n", c1, c1, c1.IsZero())
fmt.Printf("%T [%s] %v\n", d1, d1, d1.IsZero())
}
func nowExample() {
fmt.Println()
fmt.Println()
fmt.Println("github.com/jinzhu/now")
fmt.Println("=====================")
a := "2013-02-08T13:35:26" // invalid
b := "2013-02-08 13:35:26"
c := "2017/12/18 23:30:46"
d := "2021-04-08"
var err error
var a1 time.Time
a1, err = now.Parse(a)
if err != nil {
fmt.Println("a1:", a, err)
} else {
fmt.Printf("a1 %T %s\n", a1, a1)
}
var b1 time.Time
b1, err = now.Parse(b)
if err != nil {
fmt.Println("b1:", b, err)
} else {
fmt.Printf("b1 %T %s\n", b1, b1)
}
var c1 time.Time
c1, err = now.Parse(c)
if err != nil {
fmt.Println("c1:", c, err)
} else {
fmt.Printf("c1 %T %s\n", c1, c1)
}
var d1 time.Time
d1, err = now.Parse(d)
if err != nil {
fmt.Println("d1:", d, err)
} else {
fmt.Printf("d1 %T %s\n", d1, d1)
}
}
func gomentExample1() {
fmt.Println()
fmt.Println()
fmt.Println("github.com/nleeper/goment Example 1")
fmt.Println("===================================")
g, _ := goment.New("2013-02-08 09:30:26")
fmt.Println(g.Format("LLLL"))
t := g.ToTime()
fmt.Printf("%T %v\n",t,t)
}
func gomentExample2() {
fmt.Println()
fmt.Println()
fmt.Println("github.com/nleeper/goment Example 2")
fmt.Println("===================================")
a := "2016-05-12T20:35:26"
b := "2016-05-12 20:35:26"
c := "2019/03/18 04:30:46" // invalid
d := "2021-03-11"
var err error
var a1 *goment.Goment
a1, err = goment.New(a)
if err != nil {
fmt.Println("a1:", a, err)
} else {
fmt.Printf("a1 %T %s\n", a1, a1.Format("LLLL"))
}
var b1 *goment.Goment
b1, err = goment.New(b)
if err != nil {
fmt.Println("b1:", b, err)
} else {
fmt.Printf("b1 %T %s\n", b1, b1.Format("LLLL"))
}
var c1 *goment.Goment
c1, err = goment.New(c)
if err != nil {
fmt.Println("c1:", c, err)
} else {
fmt.Printf("c1 %T %s\n", c1, c1.Format("LLLL"))
}
var d1 *goment.Goment
d1, err = goment.New(d)
if err != nil {
fmt.Println("d1:", d, err)
} else {
fmt.Printf("d1 %T %s\n", d1, d1.Format("LLLL"))
}
}
func main() {
datetimeExample()
nowExample()
gomentExample1()
gomentExample2()
}
github.com/btubbs/datetime
==========================
time.Time [2013-02-08 13:35:26 -0500 EST] false
time.Time [0001-01-01 00:00:00 +0000 UTC] true
time.Time [0001-01-01 00:00:00 +0000 UTC] true
time.Time [2021-04-08 00:00:00 -0400 EDT] false
github.com/jinzhu/now
=====================
a1: 2013-02-08T13:35:26 Can't parse string as time: 2013-02-08T13:35:26
b1 time.Time 2013-02-08 13:35:26 -0500 EST
c1 time.Time 2017-12-18 23:30:46 -0500 EST
d1 time.Time 2021-04-08 00:00:00 -0400 EDT
github.com/nleeper/goment Example 1
===================================
Friday, February 8, 2013 9:30 AM
time.Time 2013-02-08 09:30:26 +0000 UTC
github.com/nleeper/goment Example 2
===================================
a1 *goment.Goment Thursday, May 12, 2016 8:35 PM
b1 *goment.Goment Thursday, May 12, 2016 8:35 PM
c1: 2019/03/18 04:30:46 Not a matching ISO-8601 date
d1 *goment.Goment Thursday, March 11, 2021 12:00 AM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment