У меня есть локальное время, например "2013-08-27 10:01:22"
, как его преобразовать в эпоху?
Мне в принципе нужна противоположность as.POSIXct
, я искал в google и неожиданно не нашел.
У меня есть локальное время, например "2013-08-27 10:01:22"
, как его преобразовать в эпоху?
Мне в принципе нужна противоположность as.POSIXct
, я искал в google и неожиданно не нашел.
Вы можете использовать as.integer
для получения секунд с начала эпохи...
x <- as.POSIXct( Sys.time() )
#[1] "2013-08-27 12:37:17 BST"
class(x)
#[1] "POSIXct" "POSIXt"
as.integer( x )
#[1] 1377603437
Использование вектора строк, называемых times
:
times
#[1] "2013-08-27 12:39:32" "2013-08-27 12:39:33" "2013-08-27 12:39:34"
#[4] "2013-08-27 12:39:35" "2013-08-27 12:39:36" "2013-08-27 12:39:37"
#[7] "2013-08-27 12:39:38" "2013-08-27 12:39:39" "2013-08-27 12:39:40"
#[10] "2013-08-27 12:39:41"
as.integer( as.POSIXct( times ) )
#[1] 1377603609 1377603610 1377603611 1377603612 1377603613 1377603614
#[7] 1377603615 1377603616 1377603617 1377603618
Без часового пояса в строках вам, вероятно, придется указать аргумент tz
на as.POSIXct
, например. as.integer( as.POSIXct( times ) , tz = "BST" )
для британского летнего времени.
Принятый ответ усекает время на всю секунду. Тем не менее, POSIXct
действительно обеспечивает подсевую резолюцию. Как упоминалось в комментариях "statquant", вы можете использовать as.numeric
для получения точной эпохи:
result = as.numeric(as.POSIXct(Sys.time()))
Остерегайтесь того, что с параметрами по умолчанию для отображения цифр в R это будет выглядеть так, как будто у него нет цифр за десятичной точкой:
> result
[1] 1480599768
Однако они просто усекаются на дисплее. Чтобы сделать их видимыми, используйте:
> dput(result)
1480599767.58447
... или установите options('digits')
на более высокое значение.
мы также можем использовать
unclass(Sys.time())