Date
如何在 R 中處理時間戳中的時區?
我在瑞典時區 (UTC+1) 的 2016 年 8 月 17 日 21:41 給出了非 UTC 時區時間。每個條目我都有兩個這樣的錄音。我正在考慮如何將它們很好地記錄在 CSV 文件中。我想首先將它們手動轉換為 Unix 時間戳,但隨後開始考慮維護原始時區等
170820162141
以及時區的單獨列。但是,我仍然認為這些版本不是任何標準。我確實知道如何根據執行緒生成 Unix 時間戳 我怎樣才能生成 Unix 時間戳?以下命令結構也可以在這里工作。% https://stackoverflow.com/a/2764285/54964 date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"
我將使用
R
/Bash
/Zsh
/….讀取CSV文件。我的建議
- 自定義時間標記等前一個,例如
170820162141
沒有秒- 時區等的單獨列
UTC+1
CSV 文件範例
Time_start, Time_end, Time_start_timezone 170820162141, 180820160901, UTC+1
測試函式虛擬碼
Count time difference between two custom timestamps.
迭代 thrig 的提議
我將數據更改為
- 在 中添加時區
+0100
(UTC+1), , , 03012011-2011+0100, 03022011-2011+0100
。strptime(from,format="%d%m%Y-%H%M%z
我添加時區的格式%z
。data
如果時區正確設置為給定數據,則列印會正確顯示所有時間。程式碼
Rscript script.r
在五列數據上執行,其中最後兩列的時間數據library('methods') # https://unix.stackexchange.com/a/363290/16920 setClass('iso8601') #03012011-2011 setAs("character","iso8601",function(from) strptime(from,format="%d%m%Y-%H%M%z")) data <- read.csv("/home/masi/Documents/Data/log.csv", colClasses=c(NA, NA, NA, "iso8601","iso8601"), header=TRUE) # my particular case data
輸出:完美!我必鬚根據我的數據正確調整時區,因為我的時區經常變化。
- 沒有
library('methods')
,你得到Rscript Error: could not find function "setClass"
。
ISO 8601 是一種可能的格式;它可以包含時區偏移量,並且可以用各種語言進行解析
strptime
。$ cat x 2017-05-05T18:25:28+0100,2017-05-05T18:33:22+0100,foo 2017-05-05T18:34:21+0100,2017-05-05T18:38:52+0100,bar $ R -q --silent --no-save > R.version.string [1] "R version 3.4.0 (2017-04-21)" > setClass('iso8601') > setAs("character","iso8601",function(from) strptime(from,format="%Y-%m-%dT%H:%M:%S%z")) > data=read.csv("x",colClasses=c("iso8601","iso8601",NA),header=FALSE) > data V1 V2 V3 1 2017-05-05 17:25:28 2017-05-05 17:33:22 foo 2 2017-05-05 17:34:21 2017-05-05 17:38:52 bar >
date
等等可以生成 ISO 8601 格式的日期:$ date "+%Y-%m-%dT%H:%M:%S%z" 2017-05-05T19:20:58+0000 $ TZ=US/Pacific date "+%Y-%m-%dT%H:%M:%S%z" 2017-05-05T12:21:10-0700 $