在R脚本中将纪元时间(字符串)转换为人类可读的日期

时间:2019-02-19 14:28:51

标签: r timestamp epoch

我正在使用R脚本中的Web请求从ArcGIS Rest服务中检索数据。属性列之一确实包含日期值。这些日期将作为纪元值(字符串)返回。我尝试将这些时期字符串转换为人类可读的日期,但直到现在都无济于事...

请参阅下面的可复制脚本。包含日期的列称为WVK_BEGDAT。该列的内容应转换为可读的日期。

我尝试了一些通过Google找到的建议...

library(httr)
library(sf)
library(lubridate)

url <- parse_url("https://services.arcgis.com/nSZVuSZjHpEZZbRo/arcgis/rest/services")
url$path <- paste(url$path, "NWB_Wegvakken/FeatureServer/0/query", sep = "/")
url$query <- list(where = "WEGBEHSRT = 'R' AND WEGNUMMER = '015'",
                  outFields = "*",
                  returnGeometry = "true",
                  f = "json")
request <- build_url(url)
request
NWB <- st_read(request, stringsAsFactors = FALSE)
plot(st_geometry(NWB))

NWB$WVK_BEGDAT2 <- as_date(NWB$WVK_BEGDAT, format="%d-%m-%Y", tz = "CET")

我最近得到的是使用as_date()包中的lubridate函数。此函数至少不返回错误,用NA填充该列。

有什么建议吗?预先感谢。

1 个答案:

答案 0 :(得分:1)

as.POSIXct应该可以解决问题:

as.POSIXct(as.numeric(NWB$WVK_BEGDAT)/1000, origin = "1970-01-01")

您必须除以1000,因为您的纪元时间似乎是毫秒。