如何将格式化的本地时间转换为纪元?

时间:2013-08-27 11:21:30

标签: r

我有当地时间"2013-08-27 10:01:22",如何将其转换为纪元时间?

基本上我需要与as.POSIXct相反,我在谷歌搜索并且令人惊讶地没有找到任何。

3 个答案:

答案 0 :(得分:26)

你可以使用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" )

答案 1 :(得分:6)

接受的答案会截断整秒的时间。 POSIXct实际上提供了亚秒级分辨率。正如“statquant”的评论中所提到的,您可以使用as.numeric来获取确切的纪元:

result = as.numeric(as.POSIXct(Sys.time()))

请注意,使用R中数字显示的默认选项,看起来像,小数点后面没有数字:

> result
[1] 1480599768

但是,这些只是在显示屏中被截断。要使它们可见,请使用:

> dput(result)
1480599767.58447

...或将options('digits')设置为更高的值。

答案 2 :(得分:2)

我们也可以使用

unclass(Sys.time())