Ошибка смазки:: / etc / localtime ’не является символической ссылкой - PullRequest
1 голос
/ 14 апреля 2019

Когда я запускаю now() в lubridate, я получаю эту ошибку.

Предупреждение: ваша система неправильно настроена: '/ etc / localtime' не является символической ссылкой Предупреждение: Настоятельно рекомендуетсяустановить переменную окружения TZ на «Etc / Universal» (или эквивалентную)

Затем я получаю текущее время, настроенное на UTC.

[1] "2019-04-14 15:50:18 UTC"

Я искал это на SO и github и не нахожу много контента.Я запускаю RStudio Server на Linux-боксе в EC2.

Вот вершина вывода из sessionInfo ()

R version 3.5.3 (2019-03-11)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Amazon Linux AMI 2018.03

Я искал опции часового пояса в /usr/share/zoneinfo/ иувидел Pacific, что соответствует моему часовому поясу.Я пробежал Sys.setenv(TZ='Pacific'), но он все еще работает не вовремя.

[1] "2019-04-14 16:15:04 Pacific"
Warning message:
In with_tz(Sys.time(), tzone) : Unrecognized time zone ''

Ответы [ 2 ]

2 голосов
/ 14 апреля 2019

Нам нужна дополнительная информация, чтобы помочь вам - «на Linux box» не так уж и специфичен.

Глядя на рассматриваемую функцию, мы видим

 R> lubridate::now
 function (tzone = "")
 with_tz(Sys.time(), tzone)
 <bytecode: 0x55fd86dd68a8>
 <environment: namespace:lubridate>
 R> 

, поэтому базаВызов R Sys.time() в сочетании с некоторым кодом, специфичным для пакета, чтобы добраться до часового пояса.

Теперь, как информация о часовом поясе, что-то специфическое для локальной установки, предоставляется R: не стандартизировано.Отсюда и сообщение об ошибке.

Мне это нужно было один раз, потому что другой пакет (мой) и R (в то время) не делал достаточно - так что см.

 R> gettz::gettz()
 [1] "America/Chicago"
 R> 

R с тех пор улучшилосьи добавил очень похожую эвристику (поиска в других возможных местах), чтобы она была более устойчивой.Поэтому, пожалуйста, проверьте еще немного и скажите, знает ли R часовой пояс, даже если lubridate нет.

В любом случае, вы могли бы (должны?) Установить его, чтобы помочь системе.

Иесли R находит его, почему бы просто не использовать базу R?

R> format(Sys.time(), "%F %T %Z")  
[1] "2019-04-14 11:06:54 CDT" 
R> 
1 голос
/ 14 апреля 2019

Вам необходимо установить часовой пояс в вашей локальной системе. Часовые пояса, такие как "Pacific", недопустимы в R, а часовые пояса, такие как "PST", расплывчаты. Например, EST существует в Амерсии, но также существует в Австралии.

R использует часовые пояса международного стандарта IANA, и вы можете найти список допустимых часовых поясов здесь.

Вы можете установить часовой пояс для вашей локальной системы с помощью Sys.setenv(TZ='America/Los_Angeles')

Если вы хотите узнать больше о работе с датами, см. эту главу от R для Науки Данных Хедли Уикхема и Гарретта Гролемунда.

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