Как я могу получить текущую дату и время в моем формате с GMT в Go? - PullRequest
1 голос
/ 19 апреля 2019

Я пытаюсь получить дату и время следующим образом 2014-06-22 22:00:22 GMT + 2 Какой лучший способ сделать это?

Я пробую разные варианты.Самым близким был этот

time.Now().Format("2006-01-02 15:04:05 GMT+1")

И я получаю хороший результат, кроме GMT ​​- это неправильно.Я попытался изменить шаблон следующим образом:

GMT + 0 => GMT + 0

GMT + 1 => GMT + 4

Но я живу в GMT + 3 и ожидаю этого числа.Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

Например, для Москвы, GMT + 03,

package main

import (
    "fmt"
    "time"
)

func main() {
    // Your Local time zone
    now := time.Now().Round(0)
    fmt.Println(now.UTC())
    fmt.Println(now)
    t := now.Format("2006-01-02 15:04:05 GMT-07")
    fmt.Println(t)

    // For example, use Moscow time zone (GMT+03)
    fmt.Println()
    moscow, err := time.LoadLocation("Europe/Moscow")
    if err != nil {
        panic(err)
    }
    now = time.Now().In(moscow)
    fmt.Println(now.UTC())
    fmt.Println(now)
    t = now.Format("2006-01-02 15:04:05 GMT-07")
    fmt.Println(t)
}

Выход:

2019-04-19 17:24:20.582630875 +0000 UTC
2019-04-19 13:24:20.582630875 -0400 EDT
2019-04-19 13:24:20 GMT-04

2019-04-19 17:24:20.582729015 +0000 UTC
2019-04-19 20:24:20.582729015 +0300 MSK
2019-04-19 20:24:20 GMT+03
0 голосов
/ 19 апреля 2019

Согласно документации пакет time поддерживает форматы hhmm, hh:mm и hh; однозначное h смещение напрямую не поддерживается:

Числовой формат смещения часового пояса выглядит следующим образом:

-0700  ±hhmm
-07:00 ±hh:mm
-07    ±hh

Помните, что строка формата для time.Format сообщает , как визуализировать части времени . ничего не меняет в Time, , включая его локаль . Если вы хотите отобразить время в другом часовом поясе, используйте Time.In, чтобы получить время в другом часовом поясе:

timeInGMTPlus3 := time.Now().In(time.FixedZone("some zone", int((3 * time.Hour).Seconds()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...