У меня есть вектор символов дат, которые я бы хотел преобразовать в другой часовой пояс.Даты возвращаются как секунды
pubdate
[1] "Fri, 10 Jul 2015 03:21:23 +0000" "Fri, 10 Jul 2015 03:04:55 +0000"
[3] "Thu, 09 Jul 2015 23:49:01 +0000" "Thu, 09 Jul 2015 23:30:37 +0000"
[5] "Thu, 09 Jul 2015 23:27:44 +0000" "Thu, 09 Jul 2015 23:16:46 +0000"
[7] "Thu, 09 Jul 2015 23:14:06 +0000" "Thu, 09 Jul 2015 23:10:20 +0000"
[9] "Thu, 09 Jul 2015 23:07:52 +0000" "Thu, 09 Jul 2015 22:37:41 +0000"
[11] "Thu, 09 Jul 2015 22:35:06 +0000"
Я создал функцию для этого.
temp <- as.matrix(0)
for (i in 1:length(pubdate)){
tmp_dta <- strptime(pubdate[[i]],format="%a, %d %b %Y %H:%M:%S", tz="GMT")
tmp_dta$hour <- tmp_dta$hour - 1
tmp_dta <- as.POSIXct(tmp_dta)
attributes(tmp_dta)$tzone <- "Asia/Manila"
temp[i] <- tmp_dta
}
Однако, когда я пытался распечатать временные данные, кажется, что они возвращают количество секунд. Здесь
> temp
[1] 1436494883 1436493895 1436482141 1436481037 1436480864 1436480206 1436480046 1436479820
[9] 1436479672 1436477861 1436477706
Могу ли я узнать, как я могу изменить его, чтобы вернуться как даты? пример: «2015-07-10 10:21:23 PHT»
Спасибо!
ОБНОВЛЕНО: Как предложил Nicola ниже, я удалил цикл и добавил его предлагаемый код. Ниже код работает:
tmp_dta <- strptime(pubdate,format="%a, %d %b %Y %H:%M:%S", tz="GMT")
x <- as.POSIXct(tmp_dta)
attributes(x)$tzone <- "Asia/Manila"
newpubdate <- x - 3600
Try 'as.POSIXct (1436494883, происхождение = "1970-01-01", TZ = "Asia/Manila")' – lukeA
Не нужно зацикливаться. Просто попробуйте 'as.POSIXct (pubdate, format ="% a,% d% b% Y% H:% M:% S% z ", tz =" Asia/Manila ")' – nicola
Спасибо @lukea и @nicola! – dixi