Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从R中特定日期的特定时间转换秒数_R_Date_Formatting_Date Format - Fatal编程技术网

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

从R中特定日期的特定时间转换秒数,r,date,formatting,date-format,R,Date,Formatting,Date Format,如果以前有人问过这个问题,请投反对票并指示我。我一直在查看,但似乎没有人需要非午夜开始时间,即每个人都想知道如何从特定的午夜值转换秒数 我正在尝试将第二个值转换为数据值。我拥有的是2017-05-21 22:00后的秒数 我尝试使用as.POSIXct函数,但是它似乎只考虑了Y-m-d,而忽略了在它后面写h:m e、 g file$date=as.POSIXctfile$Time,origin=2017-05-21 22:00给了我 Time date 1 0.00

如果以前有人问过这个问题,请投反对票并指示我。我一直在查看,但似乎没有人需要非午夜开始时间,即每个人都想知道如何从特定的午夜值转换秒数

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

我尝试使用as.POSIXct函数,但是它似乎只考虑了Y-m-d,而忽略了在它后面写h:m

e、 g file$date=as.POSIXctfile$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
你知道如何做得更优雅吗

另外,如果你有线索知道为什么这会给我正确的输出,我洗耳恭听。

看看lubridate

所以在你的情况下会是这样的

file$date <- ymd_hm("2017-05-21 22:00") + seconds(file$Time) 
您只需尝试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
您甚至可以使用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"

您可以创建原始日期/时间的日期/时间,然后添加秒偏移量以创建新的日期/时间。@MKR您将如何执行此操作?您可以尝试使用as.POSIXct2017-05-21 22:00:00,格式=%Y-%m-%d%H:%m:%S+1以添加1秒。和as.POSIXct2017-05-21 22:00:00,格式=%Y-%m-%d%H:%m:%S+100以添加100秒。您不需要任何这样的包。出于某种原因,install.packageslubridate,dependencies=TRUE是可以的,但是librarylubridate给了我一个错误,说librarylubridate中有错误:没有名为“Lubridate”的包。您重新启动了r会话吗?在我的1.7.2版中,它就像一个符咒
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"