2017-03-09 1 views
1

私はlubridate::parse_date_timeと日付を解析していて、いくつかの日付はうまくいきません。たとえば、2004-04-04 02:00NAと返されますが、2004-04-04 01:002004-04-04 03:00はなぜ機能しますか?ここでparse_date_timeで日付を解析する:なぜ "2004-04-04 02:00"が失敗するのですか?

library("lubridate") 
"2004-04-04 01:00" %>% parse_date_time(c("Ymd HM"), tz = "America/New_York") 
"2004-04-04 02:00" %>% parse_date_time(c("Ymd HM"), tz = "America/New_York") 
"2004-04-04 03:00" %>% parse_date_time(c("Ymd HM"), tz = "America/New_York") 

NAを返す2つの他の例である:私はlubridateバージョン1.6.0を使用しています

"20110313 0240" %>% parse_date_time(c("Ymd HM"), tz = "America/New_York") 
"20130310 0255" %>% parse_date_time(c("Ymd HM"), tz = "America/New_York") 

+4

夏時間...おかげ3:00 – HubertL

答えて

2

America/New_Yorkには2004-04-04 02:00がありませんでした。 2004-04-04 01:59:59 ESTの後、クロックは2004-04-04 03:00:00 EDTに転送され、夏時間が開始されます。

タイムスタンプはAmerica/New_YorkではなくEST5に格納されている可能性があります。時間変化を節約

> "2004-04-04 01:00" %>% parse_date_time(c("Ymd HM"), tz = "EST5") %>% with_tz("America/New_York") 
[1] "2004-04-04 01:00:00 EST" 
> "2004-04-04 02:00" %>% parse_date_time(c("Ymd HM"), tz = "EST5") %>% with_tz("America/New_York") 
[1] "2004-04-04 03:00:00 EDT" 
+0

に1時59から直接行きます! '2004-04-04 02:00'が '2004-04-04 03:00'と記録されるように、それをチェックして間違った値を修正する簡単な方法はありますか? – user2503795

+0

例を使って、EST5タイムゾーンを使ってタイムスタンプを解析して答えを更新しました。 –

関連する問題