如何将数字转换为正常日期?
How to convert numeric numbers into a normal date?
我有一个 netcdf
文件可以从中提取一些变量。提供者告诉我时间变量 (A) 是自 1900-01-01 00:00:0.0
以来的小时数。我需要将此变量转换为正常日期并写入另一个 txt 文件。
f1 <- open.ncdf("C:\Users\data.nc")
# [1] "file C:\Users\data.nc has 3 dimensions:"
# [1] "longitude Size: 2"
# [1] "latitude Size: 2"
# [1] "time Size: 2920"
# [1] "file C:\Users\data.nc has 5 variables:"
# [1] "short stm[longitude,latitude,time] Longname:soil textre Missval:-32767"
时间:
A <- get.var.ncdf(nc=f1,varid="time")
head(A)
## [1] 990552 990558 990564 990570 990576 990582
另一个变量:
B1 <- get.var.ncdf(nc=f,varid="stm")
write.table(t(rbind(A,B1)),file="output.txt")
在写入文本输出文件之前,我需要你的帮助将时间变量转换为正常日期。
日期
如果 A
是自 "1900-01-01"
以来的小时数,只需将它们除以 24,然后将此日期传递到 as.Date
函数中的 origin
参数,如
A <- c(990552, 990558, 990564, 990570, 990576, 990582)
as.Date(A/24, origin = "1900-01-01")
## [1] "2013-01-01" "2013-01-01" "2013-01-01" "2013-01-01" "2013-01-02" "2013-01-02"
日期+时间
如果您也想要小时数,请改用 as.POSIXct
并乘以 3600(您可能也应该在 tz
参数中指定您的时区)
as.POSIXct(A*3600, origin = "1900-01-01")
## [1] "2013-01-01 02:00:00 IST" "2013-01-01 08:00:00 IST" "2013-01-01 14:00:00 IST" "2013-01-01 20:00:00 IST" "2013-01-02 02:00:00 IST" "2013-01-02 08:00:00 IST"
时区
要了解您所在的时区,请输入
Sys.timezone()
要获得可能时区的完整列表,请输入
OlsonNames()
Adding/Removing 小时
无论哪种方式,您都可以通过将小时数乘以 3600
和结果中的 adding/removing 来 remove/add 小时,例如
as.POSIXct(A*3600, origin = "1900-01-01") - 2*3600
我有一个 netcdf
文件可以从中提取一些变量。提供者告诉我时间变量 (A) 是自 1900-01-01 00:00:0.0
以来的小时数。我需要将此变量转换为正常日期并写入另一个 txt 文件。
f1 <- open.ncdf("C:\Users\data.nc")
# [1] "file C:\Users\data.nc has 3 dimensions:"
# [1] "longitude Size: 2"
# [1] "latitude Size: 2"
# [1] "time Size: 2920"
# [1] "file C:\Users\data.nc has 5 variables:"
# [1] "short stm[longitude,latitude,time] Longname:soil textre Missval:-32767"
时间:
A <- get.var.ncdf(nc=f1,varid="time")
head(A)
## [1] 990552 990558 990564 990570 990576 990582
另一个变量:
B1 <- get.var.ncdf(nc=f,varid="stm")
write.table(t(rbind(A,B1)),file="output.txt")
在写入文本输出文件之前,我需要你的帮助将时间变量转换为正常日期。
日期
如果 A
是自 "1900-01-01"
以来的小时数,只需将它们除以 24,然后将此日期传递到 as.Date
函数中的 origin
参数,如
A <- c(990552, 990558, 990564, 990570, 990576, 990582)
as.Date(A/24, origin = "1900-01-01")
## [1] "2013-01-01" "2013-01-01" "2013-01-01" "2013-01-01" "2013-01-02" "2013-01-02"
日期+时间
如果您也想要小时数,请改用 as.POSIXct
并乘以 3600(您可能也应该在 tz
参数中指定您的时区)
as.POSIXct(A*3600, origin = "1900-01-01")
## [1] "2013-01-01 02:00:00 IST" "2013-01-01 08:00:00 IST" "2013-01-01 14:00:00 IST" "2013-01-01 20:00:00 IST" "2013-01-02 02:00:00 IST" "2013-01-02 08:00:00 IST"
时区
要了解您所在的时区,请输入
Sys.timezone()
要获得可能时区的完整列表,请输入
OlsonNames()
Adding/Removing 小时
无论哪种方式,您都可以通过将小时数乘以 3600
和结果中的 adding/removing 来 remove/add 小时,例如
as.POSIXct(A*3600, origin = "1900-01-01") - 2*3600