2016-07-24 12 views
0

3時間ごとに特定の日付に開始および終了するタイムスタンプのシーケンスを作成します。私がうまくいった方法は、すべて同じ問題を抱えています。シーケンスの途中には、PSTとPDTとの間に時間変換があり、その理由がわかりません。見たときを除き、3時間ごとのタイムスタンプのシーケンス

TIME1 <- as.POSIXct("2000-01-01 02:00:00", tz = "America/Los_Angeles") 
TIME2 <- as.POSIXct("2016-02-29 23:00:00" , tz = "America/Los_Angeles") 
temp <- seq(from = TIME1, to = TIME2, by = "3 hours") 

私はtempの出力を見て、それが最初でよさそうだ。以下は、事前にこのサイト(Question1Question2)に尋ねた質問に似て、私が試してみましたコードは、あります出力の行[1]

temp[720:745] 

[1] "2000-03-30 23:00:00 PST" "2000-03-31 02:00:00 PST" "2000-03-31 05:00:00 PST" "2000-03-31 08:00:00 PST" "2000-03-31 11:00:00 PST" "2000-03-31 14:00:00 PST" 
[7] "2000-03-31 17:00:00 PST" "2000-03-31 20:00:00 PST" "2000-03-31 23:00:00 PST" "2000-04-01 02:00:00 PST" "2000-04-01 05:00:00 PST" "2000-04-01 08:00:00 PST" 
[13] "2000-04-01 11:00:00 PST" "2000-04-01 14:00:00 PST" "2000-04-01 17:00:00 PST" "2000-04-01 20:00:00 PST" "2000-04-01 23:00:00 PST" "2000-04-02 03:00:00 PDT" 
[19] "2000-04-02 06:00:00 PDT" "2000-04-02 09:00:00 PDT" "2000-04-02 12:00:00 PDT" "2000-04-02 15:00:00 PDT" "2000-04-02 18:00:00 PDT" "2000-04-02 21:00:00 PDT" 
[25] "2000-04-03 00:00:00 PDT" "2000-04-03 03:00:00 PDT" 

お知らせ以下の間隔を指定し、それが「2000年3月31日2時00分00秒PST」に「PST 2000年3月30日午前23時00分00秒」から行きます3時間ですが、[13]では "2000-04-01 23:00:00 PST"から "2000-04-02 03:00:00 PDT"になります。そこにタイムゾーンの変更があることに注目してください。これはシーケンスを通して起こります。どのようにそのような結果を避けるために任意のアイデア?私は夏時間を自動的に変換していると思います。私がLST(地方標準時)としてそれを保つことができれば、それは素晴らしいことです。

更新日:最近this suggestionが見つかりました。ここでは、タイムゾーン「UTC」に変換して夏時間を省きます。それは、すべてのタイムスタンプをUTCとしてマークするだけで動作します。しかし、それをLSTとして維持する方法がまだあるかどうかを確認することは良いことです。

+1

[我々は戻っRに夏時間に切り替わり、いつの日にデータの取り扱い]の可能複製(http://stackoverflow.com/questions/13865172/handling-data-on-the-私たちが昼間の省エネルギーの時代である時代) – dayne

+1

LST =現地標準時? –

+0

は 'lubridate'パッケージの' dst'と 'dhours'関数も見ています。それらはここでは関連しています。 – shayaa

答えて

4

太平洋標準時()をタイムゾーンとして使用し、太平洋夏時間(PDT)に切り替えたくない場合は、それを指定するのはなぜですか? "America/Los Angeles"は... UTCを使用することをお勧めします

TIME1 <- as.POSIXct("2000-01-01 02:00:00", tz = "PST") 
TIME2 <- as.POSIXct("2016-02-29 23:00:00" , tz = "PST") 
temp <- seq(from = TIME1, to = TIME2, by = "3 hours") 
temp[720:745] 
[1] "2000-03-30 23:00:00 PST" "2000-03-31 02:00:00 PST" 
[3] "2000-03-31 05:00:00 PST" "2000-03-31 08:00:00 PST" 
[5] "2000-03-31 11:00:00 PST" "2000-03-31 14:00:00 PST" 
[7] "2000-03-31 17:00:00 PST" "2000-03-31 20:00:00 PST" 
[9] "2000-03-31 23:00:00 PST" "2000-04-01 02:00:00 PST" 
[11] "2000-04-01 05:00:00 PST" "2000-04-01 08:00:00 PST" 
[13] "2000-04-01 11:00:00 PST" "2000-04-01 14:00:00 PST" 
[15] "2000-04-01 17:00:00 PST" "2000-04-01 20:00:00 PST" 
[17] "2000-04-01 23:00:00 PST" "2000-04-02 02:00:00 PST" 
[19] "2000-04-02 05:00:00 PST" "2000-04-02 08:00:00 PST" 
[21] "2000-04-02 11:00:00 PST" "2000-04-02 14:00:00 PST" 
[23] "2000-04-02 17:00:00 PST" "2000-04-02 20:00:00 PST" 
[25] "2000-04-02 23:00:00 PST" "2000-04-03 02:00:00 PST" 

referenced questionを、定義によって(DSTスイッチを含む)は、特定の時間にロサンゼルスで有効になっている時間帯を意味し、その3文字のタイムゾーンのコメントコードはあいまいである可能性があります(例えば、オーストラリアと北アメリカの両方とも東部標準時間を持っていますが、this referenceはオーストラリアのものがAESTとしてコードされていることを示唆しています)。このようにタイムゾーンのコードは、オペレーティング・システム固有であることのチャンス...出力のライン[1]

+1

'' PST ''は有効なタイムゾーンではないため、「太平洋標準時」を意味するものではありません。太平洋標準時の省略形ですが、他のタイムゾーンの省略形でもあります。 –

+0

OK;私はこの回答を削除することをお勧めしますか? (FWIW、 'tz = PST'は' tz = GMT-8'と同じ答えをしているようですので、おそらくOS時刻/日付ライブラリが正しく推測されているでしょうか? –

+0

'tz =" PST " 'は' tz = "GMT-8" 'と同じ答えを返します。印刷された回答の*形式*は同じです(短縮された時間帯には保存されます)。 ');' tz = "PST" 'のとき、基礎となる値はすべてUTCです。(例:' .POSIXct(unclass(temp)、tz = "UTC") ')。 –

1

お知らせを持っているとして、あなたは確かにそれから行く、慎重にあなたの結果を確認するように注意する必要があります"2000-03-30 23:00:00 PST"から "2000-03-31 02:00:00 PST"に3時間ですが、[13]には "2000-04-01 23:00:00 PST "から" 2000-04-02 03:00:00 PDT "に変更されます。

ノートに "2000年4月1日夜11時00分00秒PST" "2000年4月2日3時00分00秒PDT" それは 3時間です。

あなたが夏時間を観察するが、あなたの現在の現地時間とGMTからのオフセットと同じではありませんタイムゾーンをしたい場合は、?timezoneタイムゾーン名セクションの提案を試すことができます。

ほとんどのプラットフォームでは、 'GMT + n'と 'GMT-n'という形式のタイムゾーンがサポートされています。これらのタイムゾーンは、UTCとの固定オフセット(したがってDSTはありません)を前提としています。

R> TIME1 <- as.POSIXct("2000-01-01 02:00:00", tz = "GMT-8") 
R> TIME2 <- as.POSIXct("2016-02-29 23:00:00", tz = "GMT-8") 
R> temp <- seq(from = TIME1, to = TIME2, by = "3 hours") 
R> temp[720:745] 
[1] "2000-03-30 23:00:00 GMT" "2000-03-31 02:00:00 GMT" 
[3] "2000-03-31 05:00:00 GMT" "2000-03-31 08:00:00 GMT" 
[5] "2000-03-31 11:00:00 GMT" "2000-03-31 14:00:00 GMT" 
[7] "2000-03-31 17:00:00 GMT" "2000-03-31 20:00:00 GMT" 
[9] "2000-03-31 23:00:00 GMT" "2000-04-01 02:00:00 GMT" 
[11] "2000-04-01 05:00:00 GMT" "2000-04-01 08:00:00 GMT" 
[13] "2000-04-01 11:00:00 GMT" "2000-04-01 14:00:00 GMT" 
[15] "2000-04-01 17:00:00 GMT" "2000-04-01 20:00:00 GMT" 
[17] "2000-04-01 23:00:00 GMT" "2000-04-02 02:00:00 GMT" 
[19] "2000-04-02 05:00:00 GMT" "2000-04-02 08:00:00 GMT" 
[21] "2000-04-02 11:00:00 GMT" "2000-04-02 14:00:00 GMT" 
[23] "2000-04-02 17:00:00 GMT" "2000-04-02 20:00:00 GMT" 
[25] "2000-04-02 23:00:00 GMT" "2000-04-03 02:00:00 GMT" 
R> attr(temp, "tzone") 
[1] "GMT-8" 
+0

GMT-8が未知のタイムゾーンであることを警告しましたが、あなたの出力を再現することができましたが、これは良いかもしれません。代替案もあります。ありがとうございます。 – lurodrig

関連する問題