2012-02-28 9 views
0

私は年間を通じてイベントを投稿するウェブサイトに取り組んでいます。訪問者がカレンダーにイベントを追加できるように.ICSダウンロードを提供しています。将来の予定をスケジュールするときの夏時間の扱い方は?

最近、3月11日以降に発生するイベントについて、ビジターがオフになる時間(その場所に応じてプラスマイナス1時間)を報告しています。基本的に、これはイベントが発生する実際の時間です時間のシフトですが、イベントは調整しないでください特定の時間に予定されていたということです。

この問題を回避するにはどうすればよいですか?時間を足したり引いたりすることによって補う試みはすべて、東海岸または西海岸のいずれかで破壊されました。ここ

可能な関連する質問: https://stackoverflow.com/questions/9484447/scheduling-events-and-daylight-savings-time

UPDATE:ここで私が使用しているコードは次のとおりです。

// Create calendar and add the desired timezone 
DDay.iCal.iCalendar iCal = new DDay.iCal.iCalendar(); 
var targetTimeZone = TimeZoneInfo.FindSystemTimeZoneById(tzid); 
iCal.AddTimeZone(targetTimeZone); 

// Create the event and add it to the calendar 
DDay.iCal.Event evt = iCal.Create<DDay.iCal.Event>(); 

// Adjust the start/end date by one hour if the dates/times fall under daylight savings in the target timezone 
if (targetTimeZone.IsDaylightSavingTime(endDt)) 
    endDt = endDt.AddHours(-1); 
evt.DTEnd = new iCalDateTime(endDt, tzid); 

if (targetTimeZone.IsDaylightSavingTime(startDt)) 
    startDt = startDt.AddHours(-1); 
evt.DTStart = new iCalDateTime(startDt, tzid); 

答えて

1

解決策は、iCalendarからタイムゾーンを完全に省略し、UTCの日付/時刻を使用することでした。

+1

これは数年前ですが、あなたは1時間の矛盾がありますが、私は今対処しています。 DSTでないイベントが予定されている場合は、DSTがその年の後に変更されると、以前に入力された日付が1時間表示されます。 DSTではなく、DSTでの時間はもちろん、他の方向から1時間ずれています。 – Bon

+1

@Bon私はNodaTimeの使用をお勧めします。更新されたDSTスケジュールがあり、ローカルタイムゾーンに/から変換すると、DSTがオンかオフかに基づいて正しいオフセットが自動的に減算/追加されます。 – Yashvit

0

それはすべてあなたが夏時間が懸念されている場合、将来の事象をスケジュール処理する方法に依存します。 ..

東海岸にいると、あなたのタイムゾーンはEST(つまりGMT-5)で、3月11日以降はEDT(GMT-4)です。 3月15日に午前11時のイベントを予定している場合、午後5時(GMT)(午前11時)または午後4時(GMT)(午前11時)にイベントを開催しますか?

これが最初の場合は、自分が行っていることを続けなければなりません。それが2番目の場合は、その時間から1時間だけ減算することができます。 GMT時代のように常に考えてみると、混乱を避けることができます。

+0

ありがとうございます。後で私が目指していることですが、1時間を引いて西海岸から.ICSをダウンロードすると、間違った方向に補正され、5時間先にイベントがスケジュールされます(3つではなく)。しかし、1時間を引いて、東海岸のためにそれを修正する。 –

+0

西海岸は後日PDTに移動しますか? – zmbq

+0

時間が完全に定義されたイベント(例:3月28日、4:52 pm)を処理するには、UTCを使用するのが良い方法です。しかし、毎日や毎週のイベントでは必ずしも役立つとは限りません。毎週日曜日の午前1時59分に発生するイベントと午前3時01分に発生するイベントとの間にはどのくらいの時間がありますか? – supercat

1

日時情報も、たとえば「Sun、09 March 2008 16:05:07 GMT」または「1997-07-16T19:20:30.45 + 01: 00 "

+0

ありがとう、私はいくつかの例のコードで私の質問を更新しました。私が使用しているシステムがUTCとして日付を保存しているかどうかは分かりません... –

関連する問題