从R中特定日期的特定时间转换秒数

时间:2018-02-21 07:39:40

标签: r date formatting date-format

如果之前已经提出这个问题,请向我投票并指导我。我一直在寻找,但似乎没有人需要非午夜开始时间,即每个人都想知道如何从特定的午夜值转换秒数。

我正在尝试将我的第二个值转换为数据值。我所拥有的是从2017-05-21 22:00开始的几秒钟。

我尝试使用as.POSIXct()函数,但它似乎只考虑了Y-m-d而忽略了我写之后的h:m。

例如文件$ date = as.POSIXct(文件$ Time,origin =“2017-05-21 22:00”)给了我

  Time         date
1 0.00         2017-05-22 00:00:00

我发现是否使用

file$Time = file$Time-3600*4

file$date = as.POSIXct(file$Time,origin = "2017-05-22")

由于某种原因给了我正确的输出,当然

  Time         date
1 0.00         2017-05-21 22:00:00

关于如何更优雅地做到这一点的任何想法?

另外,如果你有一个线索,为什么这给了我正确的输出,我都是耳朵。

2 个答案:

答案 0 :(得分:1)

您只需尝试as.POSIXct转换您的开始时间,然后继续添加秒。为:

as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S")
#[1] "2017-05-21 22:00:00 BST"
 as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S") + 1
#[1] "2017-05-21 22:00:01 BST"
 as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S") + 100
#[1] "2017-05-21 22:01:40 BST"
 as.POSIXct("2017-05-21 22:00:00", format = "%Y-%m-%d %H:%M:%S") + 300
#[1] "2017-05-21 22:05:00 BST

您甚至可以使用time-zone参数指定tz

as.POSIXct("2017-05-21 22:00:00", tz = "UTC", format = "%Y-%m-%d %H:%M:%S")
#[1] "2017-05-21 22:00:00 UTC"

as.POSIXct("2017-05-21 22:00:00", tz = "UTC", format = "%Y-%m-%d %H:%M:%S") + 96
#[1] "2017-05-21 22:01:36 UTC"

答案 1 :(得分:0)

查看lubridate ...

library(lubridate)
ymd_hm("2017-05-21 22:00") + seconds(1.01)

所以在你的情况下,它会像

file$date <- ymd_hm("2017-05-21 22:00") + seconds(file$Time)