【问题标题】:Round an POSIXct date up to the next day将 POSIXct 日期四舍五入到第二天
【发布时间】:2012-08-09 17:43:13
【问题描述】:

我有一个类似于Round a POSIX date (POSIXct) with base R functionality 的问题,但我希望始终将日期四舍五入到第二天午夜 (00:00:00)。

基本上,对于 POSIX 格式的日期,我想要一个等效于 ceiling 的函数。与相关问题一样,我正在编写自己的包,并且我已经有几个包依赖项,所以我不想添加更多。有没有一种简单的方法可以在基础 R 中做到这一点?

【问题讨论】:

  • 您将遇到时区和夏令时问题。如果您不需要时间组件,只需使用Date
  • 我正在网络抓取 POSIXct 样式的时间戳,并且我正在尝试将它们四舍五入到第二天。我不知道Date 格式是否适用...
  • 所以你有 POSIXct 风格的字符串......你不能从字符串中去掉时间分量,转换为 Date 并在结果中加 1 吗?
  • 我实际上得到了 UNIX 风格的时间戳,以纳秒为单位。所以我打算剥离纳秒并转换为 POSIXct,然后从那里开始使用它们。
  • 如果您可以提供输入示例(包括时区,如果适用)、如何将其转换为 POSIXct 以及所需的输出(包括时区,如果适用),将会很有用。

标签: r posixct


【解决方案1】:

也许

trunc(x,"days") + 60*60*24

> x <- as.POSIXct(Sys.time())
> x
[1] "2012-08-09 18:40:08 BST"
> trunc(x,"days")+ 60*60*24
[1] "2012-08-10 BST"

【讨论】:

    【解决方案2】:

    一种快速而肮脏的方法是转换为 Date(截断时间),加 1(这是 Date 的一天),然后转换回 POSIX 以在世界标准时间午夜明天。正如@Joshua Ulrich 指出的那样,时区/夏令时问题可能会产生您意想不到的结果:

    as.POSIXct(as.Date(Sys.time())+1)
    [1] "2012-08-10 01:00:00 BST"
    

    【讨论】:

      猜你喜欢
      • 2016-01-17
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-05
      • 2013-10-17
      • 2015-02-04
      • 1970-01-01
      相关资源
      最近更新 更多