使用R语言查找昨天的日期

10

在我的一个R脚本中,我需要找到昨天的日期,在我的Mac上可以使用以下命令轻松完成。

yesterday <- format(Sys.Date()-1,"%m/%d/%Y")
yesterday
[1] "03/17/2017"

所以基本上Sys.Date()-1给出昨天的日期。然而,当我在我的ubuntu 16.04机器(AWS实例)上运行这个命令时,它不起作用。它返回今天的日期?有其他人遇到过这个问题吗?如果不使用Sys.Date()-1命令,我该如何得到昨天的日期?

更新:亚马逊AWS表示服务器位置在N.California,但进一步检查发现服务器的时区实际上比当地时间快了7小时?我使用了这个工具,IP Location Finder来尝试定位IP地址,发现IP地址在N.Califorina?令人困惑,但现在我只是将7小时添加到我的日期变量中,这是一个短期解决办法,但我想了解是什么原因导致了这个时区问题。


2
在Ubuntu 16.04.2 LTS上,Sys.Date()-1会返回[1] "2017-03-17" - Rich Scriven
2
也许你的AWS机器所在的时区与你不同?Sys.timezone()是什么? - Gregor Thomas
我最初想到的是可能是时区问题。然而,服务器和我都在加利福尼亚州北部。 - Developing
1个回答

3
Sys.Date 返回一个"Date"类的对象,而 Sys.time 返回一个 "POSIXct" 类的对象(DateTimeClasses 中的)。
由于 "POSIXct" 是自纪元以来经过的秒数,而不是日期对象,因此使用 Sys.time 处理确切的时间将变得更加容易。请参阅:https://www.epochconverter.com/ 以更好地了解 epoch 时间。
无论如何,这两种方法都应该有效,可能只是您的 Ubuntu 系统没有设置正确的时间。

顺带一提,为了补充这个回答,在进行Sys.Time()的数学运算时,请使用正或负秒,例如Sys.time() - 86400,以获取精确的24小时前的时间。 Sys.Date() - 1只显示昨天的日期,没有小时,分钟和秒的信息。 - user208145

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接