将json元帅时间转换为nsdate

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"