Я использую пакет fasttime для его функции fastPOSIXct
, которая может эффективно считывать данные о символах. Моя проблема заключается в том, что он может читать только даты персонажа, КОТОРЫЕ ЯВЛЯЮТСЯ В Гринвизе.Как правильно преобразовать часовые пояса
R) fastPOSIXct("2010-03-15 12:37:17.223",tz="GMT") #very fast
[1] "2010-03-15 12:31:16.223 GMT"
R) as.POSIXct("2010-03-15 12:37:17.223",tz="GMT") #very slow
[1] "2010-03-15 12:31:16.223 GMT"
Теперь у меня есть файл с DateTimes, выраженные в «America/Montral» часовой пояс, план, чтобы загрузить их (неявным, делая вид, что они находятся в GMT) и модифицирование впоследствии атрибут временной зоны без изменения базового значения ,
Если я использую эту функцию, refered в другом посте:
forceTZ = function(x,tz){
return(as.POSIXct(as.numeric(x), origin=as.POSIXct("1970-01-01",tz=tz), tz=tz))
}
Я вижу ошибку ...
R) forceTZ(as.POSIXct("2010-03-15 12:37:17.223",tz="GMT"),"America/Montreal")
[1] "2010-03-15 13:37:17.223 EDT"
... потому что я хотел бы, чтобы это было
R) as.POSIXct("2010-03-15 12:37:17.223",format="%Y-%m-%d %H:%M:%OS",tz="America/Montreal")
[1] "2010-03-15 12:37:17.223 EDT"
Есть ли обходной путь?
EDIT: Я знаю о lubridate::force_tz
, но это слишком медленно (не указывать, используя fasttime::fastPOSIXct
больше)
Итак, у вас есть вход «character»: «2010-03-15 12: 31: 16.223 GMT», и вы хотите, чтобы объект POSIXct выглядел как? – GSee
Нет, у меня есть символ в файле, который выглядит как '' 2010-03-15 12: 37: 17.223 «Я знаю, что часовой пояс« Америка/Монреаль », но я хочу загрузить его и преобразовать его в' POSIXct 'с' fasttime', этот пакет считает, что строка представляет собой дату-время в «GMT», поэтому я должен сказать R, что результирующий объект POSIXct не является «GMT», а «America/Montreal» – statquant
И что вы хотите получить быть? то, что не так с решением 'as.POSIXct', которое вы показываете выше? – GSee