将 posixct 时间格式转换为 00:00:00

6
我希望可以将数据框中的以下列转换为00:00:00 (HH:MM:SS)格式,输出的类应该是"POSIXct"格式
这不是包括午夜时间的日期时间转换的完全重复,因为这些时间不包括午夜。
以下为数据框的列。
> gg
[1] "2018-01-16 10:29:00 IST" "2018-01-16 10:29:00 IST"
[3] "2018-01-16 10:29:00 IST" "2018-01-16 10:29:00 IST"
[5] "2018-01-16 10:29:00 IST" "2018-01-16 10:29:00 IST"

我尝试了以下代码,但它没有解决我的问题。

  paste(as.Date(gg, format="%Y-%m-%d"),"00:00:00")

[1] "2018-01-16 00:00:00" "2018-01-16 00:00:00" "2018-01-16 00:00:00"
[4] "2018-01-16 00:00:00" "2018-01-16 00:00:00" "2018-01-16 00:00:00"

我希望输出的类应该是 "POSIXct" "POSIXt"

所以我正在使用 as.POSIXct

这里缺少 00:00:00

as.POSIXct(paste(as.Date(gg, format="%Y-%m-%d"),"00:00:00"))

[1] "2018-01-16 IST" "2018-01-16 IST" "2018-01-16 IST" "2018-01-16 IST"
[5] "2018-01-16 IST" "2018-01-16 IST"

所需格式为

[1] "2018-01-16 00:00:00 IST" "2018-01-16 00:00:00 IST"
[3] "2018-01-16 00:00:00 IST" "2018-01-16 00:00:00 IST"
[5] "2018-01-16 00:00:00 IST" "2018-01-16 00:00:00 IST"

并且类应该是"POSIXct" "POSIXt"

数据集

> dput(gg)
structure(c(1516078740, 1516078740, 1516078740, 1516078740, 1516078740, 
1516078740), class = c("POSIXct", "POSIXt"), tzone = "")

谢谢你。


format(gg,'%Y-%m-%d 00:00:00 IST') 格式化 - vsb
1
这是一个不同的问题,与其标记为完全重复的问题不同。这个问题是在询问如何使一个不是午夜的时间看起来像是午夜,即将其舍入到当天。另一个问题是在询问如何强制显示为午夜的时间的00:00:00 H:M:S信息。那个答案可以作为解决此问题的一部分,但这是一个不同的问题,并没有任何舍入组件。 - De Novo
当你理解为什么这是一个重复的问题时,你的问题就会得到解决。 - Ista
同意不同意。round(gg, units = "days")仍然是一个POSIX对象,并且已经从不是午夜的日期转换为午夜的日期。format()将其转换为字符。仅仅因为在帖子中可以使用另一个帖子的答案来复制所需的行为,这并不意味着问题是完全重复的。 - De Novo
1
这两个问题本质上都在问:“为什么as.POSIXct(“2018-01-16 00:00:00”)不显示时间?” - Ista
是的,它们不是完全相同的副本。 - De Novo
1个回答

6

POSIX.ct有一个四舍五入的方法。

round(gg, units = "days")

为了让它显示00:00:00
format(round(gg, units = "day"), '%Y-%m-%d %M:%H:%S')

四舍五入的好处是不依赖于语言环境。


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