2015-04-16 5 views
3

Как конвертировать локальную DateTime в следующем формате "12/31/2014 6:42:52 PM" в UTC в R? Я попробовал этотконвертировать локальную датуВремя в UTC в R

as.POSIXct(as.Date("12/31/2014 6:42:52 PM", format="%m/%d/%Y %H:%M:%S"),tz="UTC")

но это, кажется, не будет действительным.

+2

Вы попробовали 'strptime (" 12/31/2014 6:42:52 PM ", format ="% m /% d /% Y% H:% M:% S ", tz =" UTC ") '? –

+0

Какова ваша текущая часовая зона в консоли R, введите 'Sys.timezone()' – ccapizzano

+0

'as.POSIXct (" 31.12.2016 6:42:52 PM ", format ="% m /% d /% Y% H:% M:% S ", tz =" UTC ")' - отбросить часть 'as.Date()' в середине. Это не нужно, и это просто означает, что вы сокращаете компонент времени, заполняя преобразование. Ответ @MamounBenghezal также возвращает 'POSIXlt' вместо даты/времени' POSIXct'. Используйте 'as.POSIXct' в предпочтении, поскольку он, как правило, более адаптируется. – thelatemail

ответ

11

Если вы хотите перевести дату и время с вашего текущего часового пояса на UTC, вам необходимо импортировать в свой часовой пояс, а затем просто сдвинуть часовой пояс дисплея на «UTC». например: в австралийском EST я UTC + 10.

out <- as.POSIXct("12/31/2014 6:42:52 PM", format="%m/%d/%Y %H:%M:%S") 
out 
#"2014-12-31 06:42:52 EST" 
#(Australian Eastern Standard Time) 
as.numeric(out) 
#[1] 1419972172 

Теперь смещение часового пояса для отображения:

attr(out, "tzone") <- "UTC" 
out 
#[1] "2014-12-30 20:42:52 UTC" 
# display goes 10 hours backwards as I'm UTC+10 
as.numeric(out) 
#[1] 1419972172 

Обратите внимание, что это не влияет на основные числовые данные (в секундах с 1970-01-01), он изменяет только то, что отображается.

+0

Это то, что я искал. Спасибо за ответ. – Sam

Смежные вопросы