"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como analisar uma string de horário com um fuso horário específico no Go?

Como analisar uma string de horário com um fuso horário específico no Go?

Publicado em 15/11/2024
Navegar:878

How to Parse a Time String with a Specific Time Zone in Go?

Analisando o tempo com um fuso horário específico

Você pode usar time.ParseTime() para obter uma estrutura de tempo de uma string. Ele usa uma string de layout como argumento, que especifica o formato da string de entrada. A string de layout deve corresponder exatamente ao formato da string de entrada.

Se você precisar analisar uma string de horário que inclua um fuso horário, poderá usar time.ParseInLocation(). Esta função recebe uma string de layout e um local como argumentos. O local pode ser um valor time.Location ou uma string representando um nome de fuso horário.

Por exemplo, o código a seguir analisa uma string de horário que inclui um fuso horário:

import (
    "fmt"
    "time"
)

func main() {
    const layout = "2006-01-02 15:04"
    const timeStr = "2012-07-09 05:02:00  0000 CEST"

    t, err := time.ParseInLocation(layout, timeStr, time.Local)
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(t)
}

Este código imprimirá a seguinte saída:

2012-07-09 05:02:00  0000 CEST

A função time.ParseInLocation() analisará a hora string de acordo com a string de layout e o local especificado. Nesse caso, a sequência de layout é "2006-01-02 15:04" e o local é "CEST". A função time.ParseInLocation() retornará um valor time.Time que representa o tempo analisado.

Se você não especificar um local, a função time.ParseInLocation() usará o fuso horário local. Isso significa que a hora analisada será convertida para o fuso horário local.

Você pode evitar isso criando um valor time.Time com a hora e o fuso horário corretos:

import (
    "fmt"
    "time"
)

func main() {
    const layout = "2006-01-02 15:04"
    const timeStr = "2012-07-09 05:02:00"
    const timeZone = "CEST"

    pz, err := time.LoadLocation(timeZone)
    if err != nil {
        fmt.Println(err)
        return
    }

    t, err := time.Parse(layout, timeStr)
    if err != nil {
        fmt.Println(err)
        return
    }

    T := t.In(pz)

    fmt.Println(T)
}

Este código imprimirá a seguinte saída:

2012-07-09 05:02:00  0200 CEST

A saída deste código mostra a hora no formato correto fuso horário.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3