r语言 - 如何在 POSIXct 中获取一天的开始



我的一天从2016-03-02 00:00:00开始。不2016-03-02 00:00:01.

如何以当地时间获取POSIXct一天的开始?

我的困惑可能来自R认为这是2016-03-01的结束日期?鉴于R使用ISO 8601?

例如,如果我尝试使用 Sys.Date() 查找一天的开始:

as.POSIXct(Sys.Date(), tz = "CET")
"2016-03-01 01:00:00 CET"

这是不正确的 - 但还有其他方法吗?

我知道我可以用一个简单的

as.POSIXct(paste(Sys.Date(), "00:00:00", sep = " "), tz = "CET")

但是必须有更正确的方法来做到这一点吗?首选碱基 R。

这是一个

命令---但你想要as.POSIXlt()

R> as.POSIXlt(Sys.Date())
[1] "2016-03-02 UTC"
R> format(as.POSIXlt(Sys.Date()), "%Y-%m-%d %H:%M:%S")
[1] "2016-03-02 00:00:00"
R> 

只有当转换为 POSIXct 时,时区偏移量才会输入 UTC(对我来说是六个小时):

R> as.POSIXct(Sys.Date())
[1] "2016-03-01 18:00:00 CST"
R> 

不用说,通过包装两者,您可以获得所需的类型和

R> as.POSIXct(as.POSIXlt(Sys.Date()))
[1] "2016-03-02 UTC"
R> 

再次提交,无需润滑液或其他非碱性R包。

尽管你更喜欢基本R是可以理解的,但对于"智能"的某些含义,"智能方式"将是:

library(lubridate)
x <- floor_date(Sys.Date(),"day")
> format(x,"%Y-%m-%d-%H-%M-%S")
[1] "2016-03-02-00-00-00"

?floor_date

floor_date获取日期时间对象并将其向下舍入到最接近的对象 指定时间单位的整数值。

挺方便的。

你的例子有点不清楚。

您谈论的是一天开始的 1 分钟差异,但您的示例显示了由于时区的原因而相差 1 小时。

你可以试试

?POSIXct  

以解释功能。

使用 Sys.Date() 和 POSIXct 会以某种方式覆盖您的时区设置。

as.POSIXct(Sys.Date(), tz="EET")  
 "2016-03-01 01:00:00 CET"  

输入字符串时给你

as.POSIXct("2016-03-01 00:00:00", tz="EET")  
 "2016-03-01 EET"
看起来 00:00

:00 实际上是一天的开始。您可以从以下 2 个不等式的结果中得出结论

as.POSIXct("2016-03-02 00:00:02 CET")>as.POSIXct("2016-03-02 00:00:01 CET")

as.POSIXct("2016-03-02 00:00:01 CET")>as.POSIXct("2016-03-02 00:00:00 CET")

所以不知何故这是一个时区问题。请注意,00:00:00 会自动从 as 中删除。结果。

as.POSIXct("2016-03-02 00:00:00 CET")

"2016-03-02 CET"

相关内容

  • 没有找到相关文章

最新更新