我想将字符串def try_until(func, max_tries, sleep_time):
for _ in range(0,max_tries):
try:
return func()
except:
sleep(sleep_time)
raise WellNamedException()
转换为有效日期("20101011"
),但无法确定如何执行此操作。
我试过了:
2010-10-11
和
now := time.Now()
date := now.Format("20101011")
两个人都没有工作。
答案 0 :(得分:3)
import "time"
const ( ANSIC = "Mon Jan _2 15:04:05 2006" UnixDate = "Mon Jan _2 15:04:05 MST 2006" RubyDate = "Mon Jan 02 15:04:05 -0700 2006" RFC822 = "02 Jan 06 15:04 MST" RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone RFC850 = "Monday, 02-Jan-06 15:04:05 MST" RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST" RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone RFC3339 = "2006-01-02T15:04:05Z07:00" RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00" Kitchen = "3:04PM" // Handy time stamps. Stamp = "Jan _2 15:04:05" StampMilli = "Jan _2 15:04:05.000" StampMicro = "Jan _2 15:04:05.000000" StampNano = "Jan _2 15:04:05.000000000" )
这些是在Time.Format和Time.Parse中使用的预定义布局。 布局中使用的参考时间是特定时间:
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方法可以 将相同的转换应用于一般时间值。
对time
使用"20060102"
格式字符串YYYYMMDD
。对time
使用"2006-01-02"
格式字符串YYYY-MM-DD
。
例如,
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now)
date := now.Format("20060102")
fmt.Println(date)
date = now.Format("2006-01-02")
fmt.Println(date)
date2, err := time.Parse("20060102", "20101011")
if err == nil {
fmt.Println(date2)
}
}
输出:
2009-11-10 23:00:00 +0000 UTC
20091110
2009-11-10
2010-10-11 00:00:00 +0000 UTC
答案 1 :(得分:0)
您可以执行以下操作:
dateStr := "20210131" // date in 'String' data type
dateValue, _ := time.Parse("20060102", dateStr) // convert 'String' to 'Time' data type
fmt.Println(dateValue) // output: 2021-01-31 00:00:00 +0000 UTC
dateStr = dateValue.Format("2006-01-02") // Format return a 'string' in your specified layout (YYYY-MM-DD)
fmt.Println(dateStr) // Output: 2021-01-31