Отслеживание текущего года и месяца с заданной отметкой времени - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть метка времени в формате 181020Z, который является 18-м днем ​​месяца, в 1020 UT C.

Я хотел бы разобрать это в go, где time.Time дает мне 2019-04-18T10:20:00Z вместо 0000-01-18T10:20:00Z.

Ниже приведен код, который я использую для разбора времени

    now := time.Now()
    layout := "200601021504Z"
    timeField := strconv.Itoa(now.Year()) + strconv.Itoa(int(now.Month())) + fields[1]
    fmt.Println(timeField) // 20204181050Z
    t, err := time.Parse(layout, timeField)

1 Ответ

1 голос
/ 18 апреля 2020

Вот один из подходов к этому:

func main()
    now := time.Now()
    layout := "021504Z"

    t, _ := time.Parse(layout, "181020Z")
    t = t.AddDate(now.Year(), int(now.Month()) - 1, 0) 
    fmt.Println(t)  // 2020-04-18T10:20:00Z

Пример

А в отношении вашего последнего решения - это почти правильно). Проблема в том, что ваш макет ("200601021504Z") требует двух * git представлений месяца (т. Е. 04 вместо 4 для апреля). Но now.Month() возвращает представление месяца без заполнения 0 (т.е. 4).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...