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_Datetime_Lubridate - Fatal编程技术网

R时间格式转换

R时间格式转换,r,date,datetime,lubridate,R,Date,Datetime,Lubridate,我几乎完成了我的脚本,但我的日期格式有问题。 我使用as_date函数安装了lubridate包,但它没有给出我想要的(日期)。 “时间”是我的变量,我把它的描述放在下面 我没有把我的整个脚本放在这里,因为我只关心这个格式问题(这意味着一个巨大的netcdf文件无法下载) 你能帮我吗 class(time) [1] "array" head(time) [1] 3573763200 3573774000 3573784800 3573795600 3573806400 35

我几乎完成了我的脚本,但我的日期格式有问题。 我使用as_date函数安装了lubridate包,但它没有给出我想要的(日期)。 “时间”是我的变量,我把它的描述放在下面

我没有把我的整个脚本放在这里,因为我只关心这个格式问题(这意味着一个巨大的netcdf文件无法下载)

你能帮我吗

class(time)
[1] "array"

head(time)
[1] 3573763200 3573774000 3573784800 3573795600 3573806400 3573817200

tunits
$long_name
[1] "time in seconds (UT)"
$standard_name
[1] "time"
$units
[1] "seconds since 1900-01-01T00:00:00Z"
$axis
[1] "T"
$time_origin
[1] "01-JAN-1900 00:00:00"
$conventions
[1] "relative number of seconds with no decimal part"

#conversion
date = as_date(time,tz="UTC",origin = "1900-01-01")
head(date)
[1] "-5877641-06-23" "-5877641-06-23" "-5877641-06-23" "-5877641-06-23"
[5] "-5877641-06-23" "-5877641-06-23"

as_date()
使用起始日期后的天数计算日期

您要查找的似乎是
as_datetime()
也来自
lubridate
软件包,该软件包使用自原点起的秒数计算日期。在您的示例中,这将是:

time <- c(3573763200,3573774000,3573784800,3573795600,3573806400,3573817200)
date <- as_datetime(time, tz = "UTC", origin = "1900-01-01") %>% date()
time
as_date()
使用起始日期后的天数计算日期

您要查找的似乎是
as_datetime()
也来自
lubridate
软件包,该软件包使用自原点起的秒数计算日期。在您的示例中,这将是:

time <- c(3573763200,3573774000,3573784800,3573795600,3573806400,3573817200)
date <- as_datetime(time, tz = "UTC", origin = "1900-01-01") %>% date()

时间自1900年1月1日起,时间以秒为单位。使用
lubridate
中的
seconds
方法,将
time
中的值转换为实际日期如下:

lubridate::ymd("1900-01-01") + lubridate::seconds(3573763200)
您可以将其矢量化:

lubridate::ymd("1900-01-01") + lubridate::seconds(time)

自1900年1月1日起,时间以秒为单位。使用
lubridate
中的
seconds
方法,将
time
中的值转换为实际日期如下:

lubridate::ymd("1900-01-01") + lubridate::seconds(3573763200)
您可以将其矢量化:

lubridate::ymd("1900-01-01") + lubridate::seconds(time)

尝试
as.POSIXct
而不是
as\u date
@AllanCameron谢谢,我得出了相同的结论(而且它是有效的)。我现在有一个新问题,当我想用新格式和另一个变量(数值类、温度)构建一个表时,包含日期的列返回到以前的格式,为什么?如果没有可复制的示例Celine,很难说,但最简单的方法可能是将日期转换为
date Try
as.POSIXct
而不是
as\u date
@AllanCameron谢谢,我得出了相同的结论(而且它是有效的)。我现在有一个新问题,当我想用新格式和另一个变量(数值类、温度)构建一个表时,包含日期的列返回到以前的格式,为什么?如果没有可复制的示例Celine,很难说,但最简单的事情可能是用
date转换为日期