如何将日期从一种表示法格式化为不同的表示法?

问题描述:

我的日期目前在格式:2017年6月20日20:00:07.000000000 ,我想将它们转换为:2017-06-20T20:00:07Z如何将日期从一种表示法格式化为不同的表示法?

package main 

import (
    "fmt" 
    "time" 
) 

func main() { 
    var b = "2017/06/20 20:00:07.000000000" 
    layout := "2006/01/02 15:04:05" 
    t, err := time.Parse(layout, b) 

    if err != nil { 
     fmt.Println(err) 
    } 
    fmt.Println(t) 
} 

以上程序输出为:2017-06-20 20:00:07 +0000 UTC。我试着保持布局“2006/01/02T15:04:05Z”,但它未能与消息运行:

解析时间 “二○一七年六月二十〇日20:00:07.000000000” 为 “ 2006/01/02T15:04:05Z“:无法解析”20:00:07.000000000“为”T“。

非常感谢您的帮助。谢谢。

+0

不可复制的,你提供的代码只是工作:https://play.golang.org/p/IMuvQ_iIg6 – zerkms

+0

@zerkms感谢你的评论。抱歉不理解你的陈述。上面的程序工作,但输出:** 2017-06-20 20:00:07 +0000 UTC **不是我需要它:** 2006/01/02T15:04:05Z **。 –

+0

使用[Time.Format](https://golang.org/pkg/time/#Time.Format)。 fmt.Println不会神奇地做你想做的。 – Peter

package main 

import (
    "fmt" 
    "time" 
) 

func main() { 
    var b = "2017/06/20 20:00:07.000000000" 
    layout := "2006/01/02 15:04:05" 
    t, err := time.Parse(layout, b) 

    if err != nil { 
     fmt.Println(err) 
    } 
    fmt.Println(t.Format(time.RFC3339)) 
} 

输出:2017-06-20T20:00:07Z

+0

不管谁投降,如果这个实现是错误的,请帮助提供解决方案或者更好的实现可用。只是downvoting没有做任何增加这个论坛的价值。 –

+0

我不是一个downvoting ...但你的输出没有所需的格式。所需的格式是斜杠,而不是减号。 – TehSphinX

+0

@TehSphinX感谢您的澄清。 **来自问题的声明**:我的日期目前格式为:2017/06/20 20:00:07.000000000,我想将它们转换为:** 2017-06-20T20:00:07Z **。 我在我对该问题的评论中看到了自己的错误。评论提到它是错误的。我不允许编辑评论。 –