Я использую 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)