我将非UTC时区时间定为2016年8月17日瑞典时区(UTC + 1)的21:41。每个条目都有两个这样的录音。我正在考虑如何将它们很好地记录在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.
我将数据更改为
+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
$
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句