-1

我正在尝试熟悉weatherDataR。

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

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

例如:1357084200我相信应该翻译成2013-01-01 23:50:00

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

4

2 回答 2

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")
于 2014-02-15T18:44:52.103 回答
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

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

于 2014-02-15T18:40:12.613 回答