Почему запуск времени Golang.Now () в OpenWRT всегда дает время UTC? - PullRequest
0 голосов
/ 04 января 2019

Я написал программу Golang, которая работает на OpenWRT.

package main

import (
    "fmt"
    "time"
)

func main(){
    fmt.Println(time.Now())
}

Когда я запускаю эту программу на своем Macbook, я всегда получаю правильное местное время.

Однако при запуске этогоВ программе OpenWRT я всегда получаю время UTC.

Я установил часовой пояс и время OpenWRT.Когда я выполняю uci show system, я вижу правильный часовой пояс.Когда я выполняю date, правильное местное время может отображаться правильно.

Итак, мой вопрос, как мне получить правильное местное время, используя время Голанга.Now () в OpenWRT?

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Корень моей проблемы в том, что в моем OpenWRT отсутствует пакет zoneinfo.Поэтому я сначала запускаю opkg update && opkg install zoneinfo-xxx.

Это часть go / src / time / zoneinfo_unix.go:

func initLocal() {
    // consult $TZ to find the time zone to use.
    // no $TZ means use the system default /etc/localtime.
    // $TZ="" means use UTC.
    // $TZ="foo" means use /usr/share/zoneinfo/foo.

    ...

}

Согласно этому файлу, если переменная "TZ" отсутствует, Golang будет использовать часовой пояс, на который указывает / etc / localtime, при вызове time.Now ().

Затем я устанавливаю часовой пояс на /etc/config/system (опция zonename 'xxxxxx') и запускаю /etc/init.d/system restart.Наконец, я могу получить правильное время. Теперь ().

0 голосов
/ 04 января 2019

OpenWRT сохраняет часовой пояс в файле с именем / etc / TZ.Если этот файл отсутствует или пуст, OpenWRT предполагает, что местное время равно времени UTC. Источник

как получить точное местное время, используя время Голанга. Теперь () на OpenWRT?

Указание часового поясас TZ

Это значение, которое вы должны добавить или вычесть из местного времени, чтобы получить время UTC.Это смещение будет положительным, если местный часовой пояс находится к западу от премьер-меридиана, и отрицательным, если оно восточное.

...