2015-10-26 3 views
1

Я читал this, и он говорит как. POSIXct всегда является внутренним UTC. Не удивительно, что я не получилПочему конвертирование часового пояса не работает с as.POSIXct ... [R]

> time1 = as.POSIXct('2015-10-25 10:15:13 UTC') 
> time1 
[1] "2015-10-25 10:15:13 EDT" 
# missing tz causes coercion (not converting!) to computer's tz. 
# (I'm in EDT Boston and calculating some data in Dubai time) 


> time1 = as.POSIXct('2015-10-25 10:15:13 UTC', tz = 'UTC', usetz = T) 
> time1 
[1] "2015-10-25 10:15:13 UTC" 

# not work 
> as.POSIXct(time1, tz = 'Asia/Dubai', usetz = T) 
[1] "2015-10-25 10:15:13 UTC" 

# works but the result is character 
> format(time1, tz = 'Asia/Dubai', usetz = T) 
[1] "2015-10-25 14:15:13 GST" 
> class(format(time1, tz = 'Asia/Dubai', usetz = T)) 
[1] "character" 

я могу использовать format, но она дает character и я не могу использовать его в заговоре что-то в зависимости от времени. Как я могу строить график по местному времени?

+0

привет @DavidArenburg спасибо человеку - я это выглядит - см обновление в OP pls –

+0

Вы также можете просто сделать 'as.POSIXct (формат (time1, tz = 'Asia/Dubai', usetz = TRUE), tz = 'Азия/Дубай')' –

+0

ах, да, спасибо! могу ли я добавить его в свой ответ? –

ответ

1

пытался что-то и это работает:

> library(lubridate) 
> time1 = as.POSIXct('2015-10-25 10:15:13 UTC', tz = 'UTC', usetz = T) 
> time1 
[1] "2015-10-25 10:15:13 UTC" 
> force_tz(time1 + 3600*4, tz = 'Asia/Dubai') 
[1] "2015-10-25 14:15:13 GST" 
> class(force_tz(time1 + 3600*4, tz = 'Asia/Dubai')) 
[1] "POSIXct" "POSIXt" 

Также выполнимо с Rbase со слегка более синтаксисом (благодаря @David Arenburg)

> time1 = as.POSIXct('2015-10-25 10:15:13 UTC', tz = 'UTC', usetz = T) 
> time1 
[1] "2015-10-25 10:15:13 UTC" 
> as.POSIXct(format(time1, tz = 'Asia/Dubai', usetz = T), tz = 'Asia/Dubai', usetz = T) 
[1] "2015-10-25 14:15:13 GST" 
Смежные вопросы