When I marshall time.Now()
to JSON object it gives result as "2009-11-10T23:00:00Z"
but printing time.Now
gives 2009-11-10 23:00:00 +0000 UTC
. Why are they different. What are T
and Z
. Also how can I convert it to swift NSDate object according to this table?
The meaning of those values is irrelevant, they're part of that format (ISO8601). There are a couple approaches to this. One is to define a custom MarshalJSON()
method for time or your struct and use it to format the date, the other is to represent it as a string in your struct in the first place so that when the default implementation executes you get the result you're looking for.
The method you'll ultimately need to use is; time.Format(format string)
The golang docs show this example for using it;
package main
import (
"fmt"
"time"
)
func main() {
// layout shows by example how the reference time should be represented.
const layout = "Jan 2, 2006 at 3:04pm (MST)"
t := time.Date(2009, time.November, 10, 15, 0, 0, 0, time.Local)
fmt.Println(t.Format(layout))
fmt.Println(t.UTC().Format(layout))
}
The medium date format in that link for example would use the string "Jan. 2, 2006"