Неправильный перевод времени в Go - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь преобразовать строку времени "2020-02-01T12: 30: 00 + 01: 00" (из API календаря Google) в формат time.Time в Go, по какой-то причине он продолжает давать мне «2020-01-01 12:30:00 +0000 UT C» как выходные данные (это первое января, а не первое февраля). Есть идеи, что я делаю не так?

Заранее спасибо!

package main

import (
    "fmt"
    "time"
    "log"
)

func main() {

    input := "2020-02-01T12:30:00+01:00"
    output, err := StrToTime(input)
    if err != nil{
        log.Fatal(err)
    }

    fmt.Println(output)


}

func StrToTime(strDateTime string) (time.Time, error) {

    layout := "2006-01-02T15:04:05+01:00"
    t, err := time.Parse(layout, strDateTime)

    if err != nil {
        return time.Time{}, fmt.Errorf("could not parse datetime: %v", err)
    }

    return t, nil

}

1 Ответ

4 голосов
/ 04 февраля 2020

Это происходит потому, что вы указали неправильную часть смещения времени, она должна быть -07:00, а не +01:00.

. На данный момент она обрабатывает 01 как часть месяца, второй раз и перезаписывает изначально правильно проанализированный 02 как 01 (но не из части ввода со смещением по времени).

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