我的问题来自这个问题。问题有以下字符串。
x <- "2007-02-01 00:00:00"
y <- "02/01/2007 00:06:10"
如果您尝试将此字符串转换为日期类对象,则会发生一些有趣的事情。
这是@nrusell 答案的示例。
as.POSIXct(x,tz=Sys.timezone())
[1] "2007-02-01 EST"
as.POSIXct(y,format="%m/%d/%Y %H:%M:%S",tz=Sys.timezone())
[1] "2007-02-01 00:06:10 EST"
如你所见,00:00:00
从第一个示例中消失。 @Richard Scriven 在我们的讨论中留下了以下示例:lubridate
.
dt <- as.POSIXct("2007-02-01 00:00:00")
hour(dt) <- hour(dt)+1
dt
[1] "2007-02-01 01:00:00 EST"
hour(dt) <- hour(dt)-1
dt
[1] "2007-02-01 EST"
再次,00:00:00
消失。为什么R避免保留00:00:00
转换后在日期类对象中?我们怎样才能保留00:00:00
?
这只是print
如果日期的时间部分是午夜,则会消除精度。这是 literlay 中解释的??strftime
帮助,特别是格式参数:
一个字符串。默认值为“%Y-%m-%d %H:%M:%S”(如果有)
组件的时间组件不是午夜,并且“%Y-%m-%d”
否则
一种想法是重新定义S3方法print
对于 POSIXct 对象:
print.POSIXct <- function(x,...)print(format(x,"%Y-%m-%d %H:%M:%S"))
现在举个例子,如果你打印你的 x 日期(带有午夜部分),你会得到:
x <- "2007-02-01 00:00:00"
x <- as.POSIXct(x,tz=Sys.timezone())
x
[1] "2007-02-01 00:00:00"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)