如何将字符日期转换为POSIX时间而不会丢失精度

时间:2014-02-06 10:18:23

标签: r date posixct

我有以下日期,我想将其转换为POSIX时间。我跟着this answer但是如果我将日期转换回来,输入和输出日期之间会有所不同。

char_date <- "2012-04-27T20:48:14"
unix_date <- as.integer(as.POSIXct(char_date, origin="1970-01-01"))
unix_date
# [1] 1335448800

转换回2012年4月26日星期四14:00:00。

我搞砸了什么?

2 个答案:

答案 0 :(得分:2)

不需要sub,您应该始终定义时区:

x <- as.POSIXct("2012-04-27T20:48:14", format="%Y-%m-%dT%H:%M:%S", tz="CET")
#[1] "2012-04-27 20:48:14 CEST"
as.numeric(x)
#[1] 1335552494

答案 1 :(得分:0)

我认为这里有2个问题:T字符正在影响字符解析器,因此它会影响时间部分,我假设你的时区是UTC + 10,这就是为什么你的翻译是在下午2点前一天。

(as.POSIXct(char_date, origin="1970-01-01"))
[1] "2012-04-27 BST"

(as.POSIXct(sub("T"," ",char_date), origin="1970-01-01"))
[1] "2012-04-27 20:48:14 BST"