R时间格式转换

qxsslcnc  于 2023-01-10  发布在  其他
关注(0)|答案(3)|浏览(123)

我几乎完成了我的脚本,但我有一个问题,我的日期格式。我安装了lubridate包使用as_date函数,但它没有给我我想要的(一个日期)。"时间"是我的变量,我把它的描述如下。
我没有把我的整个脚本,因为关注的只是这个格式的问题(这意味着一个巨大的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"
kh212irz

kh212irz1#

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

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

您可以对其进行矢量化:

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

xtfmy6hx2#

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

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

使用dplyr管道和lubridate中的date()函数从as_datetime()函数中提取日期。

c9x0cxw0

c9x0cxw03#

date <- as_date(time/(24*60*60), tz = "UTC", origin = "1900-01-01")  
date

相关问题