2017-06-09 16 views
0

クラス= c( "POSIXct"、 "POSIXt")に一連の日付が格納されています。これらの日付のいくつかは英国の時計の変更を横断し、連続する日の異なる時間帯をもたらし、日付間の日数を計算する際に問題を引き起こす。 BSTへのGMTから29/3/2015シフトタイムゾーンの時計の変更POSIXct日付のタイムゾーンコンポーネントを変更することはできますか?

"2015-03-29 GMT" "2015-03-30 BST" 

は私が日付をめちゃくちゃにすることなく、同じ時間帯に私のすべての日付を強制することはできますか?

すべての日付が同じタイムゾーンにあるときにうまく動作するas.Date()を使用しようとしましたが、日付が時計の変更を超えたときに問題が発生します。ここで

が再現可能な例である(おそらく唯一の英国では?):

df2 <- as.data.frame(
    structure(
    list(DateOfEntry = structure(c(1426809600, 1426896000, 
            1426982400, 1427068800, 
            1427155200, 1427241600, 
            1427328000, 1427414400, 
            1427500800, 1427587200, 
            1427670000, 1427756400), 
           class = c("POSIXct", "POSIXt"), 
           tzone = "", label = "Date of entry")), 
    class = "data.frame", .Names = c("DateOfEntry"), 
    row.names = c(NA, -12L))) 
df2$new_date <- as.Date(df2$DateOfEntry) 

これは(29/3/2015上のクロック変化に英国で)私のために、この出力で結果:

DateOfEntry new_date 
2015-03-20 2015-03-20 
2015-03-21 2015-03-21 
2015-03-22 2015-03-22 
2015-03-23 2015-03-23 
2015-03-24 2015-03-24 
2015-03-25 2015-03-25 
2015-03-26 2015-03-26 
2015-03-27 2015-03-27 
2015-03-28 2015-03-28 
2015-03-29 2015-03-29 
2015-03-30 2015-03-29 
2015-03-31 2015-03-30 

注29/3/2015の繰り返しとあなたがを試してみましたDateofEntry==2015-03-30 & new_date==2015-03-29

+1

'lubridate'関数を試しましたか? 'with_tz'と' force_tz'はタイムゾーンで動作します。 –

+0

@LourdesHernández完璧 - 答えとして追加してください。私はそれを受け入れます(私は 'lubridate'をロードしていました...) – ChrisP

答えて

0

間の1日の差は機能しますか? with_tzforce_tzはタイムゾーンで動作します。

関連する問題