我正在操纵一些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.lt
是POSIXlt
对象。我知道我可以使用as.POSIXlt
将其转换回POSIXlt
,但是有没有更优雅,更有效的方法来实现这一目标? 最佳答案
简短答案:否
长答案:POSIXct
和POSIXlt
对象是更通用的POSIXt
类的两种特定类型(不是严格意义上的面向对象的继承意义,而是准对象的实现意义)。代码在这些之间自由切换。当您添加到POSIXlt
对象时,使用的实际功能是+.POSIXt
,而不是专门用于POSIXlt
的功能。在此函数内部,参数将转换为POSIXct
,然后进行处理(添加为)。
另外,POSIXct
是距特定日期和时间的秒数。 POSIXlt
是日期部分的列表(秒,分钟,小时,月份,月,年,周,日,DST信息),因此直接添加日期没有任何意义。将其转换为秒数(POSIXct
)并加上它确实很有意义。
关于r - 如何从POSIXlt时间中添加/减去时间,同时将其类保留在R中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8857287/