2016-02-02 3 views
0

Я пытаюсь разобрать значение вКак преобразовать время UNIX в миллисекундах в POSIXlt в R?

1454181695067-0800 

Как объект даты и времени в R. Это значение миллисекунд с начала эпохи.

Если я укоротить часовой пояс и миллисекунды часть стоимости я могу разобрать, т.е.

> as.POSIXlt(1454181695, origin = "1970-01-01") 
[1] "2016-01-30 11:21:35 PST" 

Однако, можно сделать все это в одном вызове функции, которая включает в миллисекунды и обрабатывает -0800 часть правильно?

Я бы предпочел сделать это с помощью функциональности по умолчанию R.

+0

Что означает «-0800»? – Spacedman

+2

@Spacedman: скорее всего, это временной интервал с UTC. –

ответ

1

С вашей временной метки в качестве символа:

x="1454181695067-0800" 

Затем разделить его с read.fwf и построить:

> bits = read.fwf(textConnection(x),widths=c(10,3,1,2,2)) 
> as.POSIXlt(bits$V1+bits$V2/1000, origin="1970-01-01") + ifelse(bits$V3=="-",-1,1)* (bits$V4*60*60+bits$V5*60) 
[1] "2016-01-30 11:21:35 GMT" 

Хотя миллисекунды не показывают, что они есть. Если вы назовете эту вещь t0, то:

> as.numeric(t0 - as.integer(t0)) 
[1] 0.06699991 
+1

Используйте 'options (digits.secs = 3)', чтобы показывать миллисекунды при печати объектов POSIXt. –

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