我有一个本地时间"2013-08-27 10:01:22"
,如何将其转换为纪元时间?
基本上我需要相反的as.POSIXct
,我在谷歌上搜索,令人惊讶的是没有找到。
您可以使用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())