繁体   English   中英

如何在Go中格式化此字符串

[英]How to format this string in Go

这是我的程序

package main

import "fmt"
import "time"
import "strconv"
import "strings"

func main() {

    t := time.Date(2016, 10, 30, 14, 0, 0, 0, time.UTC) 


    year, month, day := t.Date()          
    hr := t.Hour()  

    s := []string{strconv.Itoa(year), strconv.Itoa(int(month)), strconv.Itoa(day)}
    date := strings.Join(s, "")

    s = []string{date, strconv.Itoa(hr)}
    date = strings.Join(s, "_")
    fmt.Println(date)       

}

去操场

输出是

20161030_14

如果我更换

t := time.Date(2016, 10, 30, 14, 0, 0, 0, time.UTC)

t := time.Date(2016, 6, 3, 9, 0, 0, 0, time.UTC)

那么输出是

201663_9

但我希望它能输出

20160603_09

也就是说,月份,日期和小时都应为两个字符,并可能在前面加上0 我怎样才能做到这一点?

或者,如果您是我,那么实现相同功能的程序是什么?

谢谢。

使用时间包提供的格式:

https://play.golang.org/p/qIZ58CJqZa

t := time.Date(2016, 6, 3, 9, 0, 0, 0, time.UTC)
fmt.Println(t.Format("20060102_15"))

从时间包文档中参考时间格式字符串:

布局中使用的参考时间是特定时间:

 Mon Jan 2 15:04:05 MST 2006 

这是Unix时间1136239445。由于MST是GMT-0700,因此参考时间可以认为是

 01/02 03:04:05PM '06 -0700 

要定义自己的格式,请写下参考时间,以哪种方式格式化; 有关示例,请参见ANSIC,StampMicro或Kitchen等常数的值。 该模型将演示参考时间的外观,以便Format和Parse方法可以将相同的转换应用于一般时间值。

在格式字符串中,下划线_表示如果后面的数字(一天)有两位数字,可以用一位数字代替空格。 与固定宽度的Unix时间格式兼容。

小数点后跟一个或多个零表示小数秒,打印到给定的小数位数。 小数点后跟一个或多个9代表一个小数秒,打印到给定的小数位数,并删除了尾随的零。 解析时(仅),即使布局不表示其存在,输入也可能在秒字段之后立即包含分数秒字段。 在这种情况下,小数点后跟最大的数字序列被解析为小数秒。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM