Libre Calc中从R到CSV的日期字符串转换

时间:2014-02-15 18:09:43

标签: r date csv libreoffice libreoffice-calc

我正在尝试熟悉R中的weatherData

下载了一组温度数据后,我将其导出为CSV。

在Libre Calc中打开CSV,将每个温度读数的日期和时间显示为十位数的字符串。尽管有一些谷歌搜索我还没有找到一种方法成功地将字符串转换为它出现在R中的格式。

例如:1357084200我认为应该转换为2013-01-01 23:50:00

任何帮助以相同的日期格式获取正确的日期以通过CSV显示在Calc中。非常感谢。

2 个答案:

答案 0 :(得分:2)

这是直接的方式:

as.POSIXct(1357084200, origin="1970-01-01", tz="GMT")
#[1] "2013-01-01 23:50:00 GMT"

如果它真的是一个角色:

as.POSIXct(as.numeric("1357084200"), origin="1970-01-01", tz="GMT")

答案 1 :(得分:0)

我不知道这样做的直接方法,但我相信我已经找到了解决方法。

首先,你的例子是正确的。长号(时间戳)是自1970-01-01 00:00:00以来经过的秒数。知道这一点,您实际上可以从时间戳计算确切的日期和时间。由于需要考虑闰年,这有点复杂。

方便的是能够向LibreOffice函数DATE提供任意数天/月/年。因此,从本质上讲,您可以通过将其除以60 * 60 * 24(一分钟内的秒数,一小时内的分钟数,一天中的小时数)来找出时间戳中表示的天数。然后将该数字提供给日期函数。

timestamp = 1357084200
days = timestamp / FLOOR(timestamp / (60*60*24); 1) // comes out at 15706
actualdate = DATE(1970; 1; 1 + days) // comes out at 2013-01-01
seconds = timestamp - days * 60 * 60 * 24 // comes out at 85800
actualtime = TIME(0; 0; seconds) // comes out at 23:50:00

然后你可以连接这些或你想做的任何其他事情。