R: `lubridate` не может распознать часовой пояс" SG "в Windows - PullRequest
1 голос
/ 30 апреля 2019

Я использую R в Debian уже 5 лет и всегда устанавливал tz() как «SG» - для «Сингапур». Когда я портирую свой код на Windows 8.1 (установленную с самыми последними R 3.6.0 и lubridate 1.7.4), я сталкиваюсь со следующей ошибкой:

> library(lubridate)
> a <- Sys.time()
> tz(a) <- "SG" 
Error in C_force_tz(time, tz = tzone, roll) :    
    CCTZ: Unrecognized output timezone: "SG"

МОЕ ИССЛЕДОВАНИЕ

Используя мою виртуальную машину Debian, я обновил lubridate с версии 1.6.0 (которая работала нормально все время) до последней версии 1.7.4, и, правда, она показала ту же ошибку.

Думая, что я нашел ошибку, я вернулся к Windows и установил lubridate 1.6.0, но вот-вот! Похожая ошибка:

> library(lubridate)
> a <- Sys.time()
> tz(a)<-"SG"
Warning messages:
1: In as.POSIXct.POSIXlt(lt) : unknown timezone 'SG'
2: In as.POSIXlt.POSIXct(ct) : unknown timezone 'SG'

Мои вопросы

Естественно, мои вопросы: (i) Почему вышеупомянутая ошибка происходит в Debian, когда я обновил lubridate до v1.7.4? а также (ii) Как я могу устранить ошибку в Windows, используя lubridate v1.6.0 или v1.7.4?

В последний раз, когда я проверял, Сингапур по-прежнему является страной, и согласно часовым поясам Microsoft по умолчанию , часовой пояс Сингапура - «SG» (середина страницы).

После всех этих лет я никогда полностью не понимал дату / время и часовые пояса. Надеюсь, что кто-то мудрее меня поможет просветить.

ИНФОРМАЦИЯ О СИСТЕМЕ

# Windows 8.1 (where the error occurred)
R: 3.6.0 (64-bit)
lubridate: both 1.6.0 and 1.7.4 give error

# Debian Jessie
R: 3.3.3 (64-bit)
lubridate: 1.6.0 (NO error) and 1.7.4 (has error)

1 Ответ

1 голос
/ 01 мая 2019

Вы можете получить список «официальных» названий часовых поясов с помощью функции OlsonNames().Не похоже, что коды стран типа «SG» есть в этом списке, но «Сингапур» есть.Так что вы можете сделать

tz(a) <- "Singapore"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...