我正在操纵一些POSIXlt DateTime对象。例如,我想增加一个小时:

my.lt = as.POSIXlt("2010-01-09 22:00:00")
new.lt = my.lt + 3600
new.lt
# [1] "2010-01-09 23:00:00 EST"
class(new.lt)
# [1] "POSIXct" "POSIXt"


问题是我希望new.ltPOSIXlt对象。我知道我可以使用as.POSIXlt将其转换回POSIXlt,但是有没有更优雅,更有效的方法来实现这一目标?

最佳答案

简短答案:否

长答案:

POSIXctPOSIXlt对象是更通用的POSIXt类的两种特定类型(不是严格意义上的面向对象的继承意义,而是准对象的实现意义)。代码在这些之间自由切换。当您添加到POSIXlt对象时,使用的实际功能是+.POSIXt,而不是专门用于POSIXlt的功能。在此函数内部,参数将转换为POSIXct,然后进行处理(添加为)。

另外,POSIXct是距特定日期和时间的秒数。 POSIXlt是日期部分的列表(秒,分钟,小时,月份,月,年,周,日,DST信息),因此直接添加日期没有任何意义。将其转换为秒数(POSIXct)并加上它确实很有意义。

关于r - 如何从POSIXlt时间中添加/减去时间,同时将其类保留在R中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8857287/

10-11 07:49