如果之前已经提出这个问题,请向我投票并指导我。我一直在寻找,但似乎没有人需要非午夜开始时间,即每个人都想知道如何从特定的午夜值转换秒数。
我正在尝试将我的第二个值转换为数据值。我所拥有的是从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
关于如何更优雅地做到这一点的任何想法?
另外,如果你有一个线索,为什么这给了我正确的输出,我都是耳朵。
答案 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)