簡體   English   中英

如何在Rmarkdown中使用數據表(DT包)打印非UTC時間戳?

[英]How can I print a non UTC timestamp using datatable (DT package) in Rmarkdown?

我有一些時間戳存儲在不同的時區,我想在rmarkdown文檔中使用DT包包含在數據rmarkdown

我想,以顯示存儲的時區,但由於某些原因,時間戳datatable將其轉換為UTC。 我使用print時的行為是我想要的但是格式不好。

如何使用datatableprint實現相同的行為?

這是rmarkdown文件的最小工作示例:

---
title: "MinorQ"
output: html_document
---

```{r setup}
library(DT)
df=data.frame(timestamp=as.POSIXct("2017-01-01 12:34:56",tz="CET"))
df$tzone=attr(df$timestamp,"tzone")
datatable(df)
print(df)
```

正如我在評論中提到的,你可以將你的POSIXct元素轉換為字符:

input <- format(as.POSIXct("2017-01-01 12:34:56", tz = "CET"), format = '%F %T %Z')
str(input)

# chr "2017-01-01 12:34:56 CET"

這並不意味着您不能使用不同的時區。 從表中讀取時,您可以使用gsub以正確的時區獲取日期:

# First gsub: remove all capital letters (so only date and time remain)
# Sec.  gsub: remove all characters exept capital letters (so only CET, UTC, etc. remain).

out <- as.POSIXct(gsub(input, pattern = "[A-Z]", replacement = ""), 
                  format = '%F %T', 
                  tz     = gsub(input, pattern = "[^A-Z]", replacement = ""))

str(out)
# POSIXct[1:1], format: "2017-01-01 12:34:56"

lubridate::tz(out)
# [1] "CET"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM