Reputation: 2800
I would like to convert date format from 2010-01-23 11:44:20
to Jan 23 '10 at 11:44
in Go. I tried few functions from time package but couldn't make it.
Could someone help me with this?
Upvotes: 4
Views: 20274
Reputation:
One way is to use the time package's Parse and Format functions,
or another way is to write your own formatter function like this:
package main
import (
"bytes"
"fmt"
"time"
)
//2010-01-23 11:44:20 to Jan 23 '10 at 11:44
func FormatDateTime(t time.Time) string {
var buffer bytes.Buffer
buffer.WriteString(t.Month().String()[:3])
buffer.WriteString(fmt.Sprintf(" %2d '%2d at %2d:%2d", t.Day(), t.Year()%100, t.Hour(), t.Minute()))
return buffer.String()
}
func main() {
t := time.Now()
str := FormatDateTime(t)
fmt.Println(str) //Apr 23 '16 at 11:50
}
Upvotes: 1
Reputation: 181037
You could use the time package's Parse
and Format
to convert it to the desired text format. Both take a reference time (2006-01-02 15:04:05) in the format you require as a parameter which makes the format fairly easy to understand.
dtstr1 := "2010-01-23 11:44:20"
dt,_ := time.Parse("2006-01-02 15:04:05", dtstr1)
dtstr2 := dt.Format("Jan 2 '06 at 15:04")
Upvotes: 10