私が提供した非UTCタイムゾーン時間は、スウェーデンのタイムゾーン(UTC + 1)である2016年8月17日21:41です。各項目には2つの録音があります。 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
そのデータのタイムゾーンが正しく設定されていると、印刷は常に正しく表示されます。
コードは5つのデータ列で実行され、Rscript script.r
最後の2つの列には時間データが含まれています。
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"
。
ベストアンサー1
ISO 8601は可能な形式の1つです。タイムゾーンオフセットを含めることができ、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
$