2016-03-25 20 views
1

GoogleのSQLデータベースからイベントを受け取り、ユーザーがOutlookまたはGoogleカレンダーのインターネットカレンダーを購読できるように、iCalファイルを作成するDDay iCalコードがあります。別のタイムゾーンにいるユーザが自分のカレンダーに同期していて、時刻が間違って表示されている場合を除き、うまくいきます。当社のWebサーバーは中央時間帯にあり、東部時間のユーザーは実際のイベント時刻の1時間前の時刻を表示します。基本的には、iCalでタイムゾーンを無視し、データベースに表示される開始時刻と終了時刻を表示するだけです。私はこれが不可能になるだろうという気持ちがあり、我々は自分自身で時間変換をしなければならないでしょう。DDay Outlook 2010のiCal変更時間

Dim iCal As iCalendar = New iCalendar() 
Dim evt As [Event] 
iCal.AddLocalTimeZone() 
Dim dtStart As DateTime = dtr_SQL("StartDate").ToString() 
Dim dtEnd As DateTime = dtr_SQL("EndDate").ToString() 
Dim startDate As iCalDateTime = dtStart.ToUniversalTime() 
Dim endDate As iCalDateTime = dtEnd.ToUniversalTime() 
evt = iCal.Create(Of [Event])() 
evt.Start = startDate 
evt.Start.HasTime = True 
evt.Start.IsUniversalTime = True 
evt.End = endDate 
evt.End.HasTime = True 
evt.End.IsUniversalTime = True 

答えて

0

SQLデータベースから時刻を取得しているので、取得する時間に関連付けられている時間帯はありません。東部標準時では、ユーザーが自分のコードを実行している場合

Dim centralTime As New Date(dtStart) 'using the datetime you pulled from your database 
Dim centralZoneId As String = "Central Standard Time" 
Dim centralZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(centralZoneId) 
Dim UTCTime as Date = TimeZoneInfo.ConvertTimeToUtc(centralTime, centralZone) 

さて、時間がデータベースから読み込まれます。ここに示すように、あなたはおそらく、あなたが「中央標準時」を引いている時間を割り当てる必要がありますCST(あなたの問題が発生している可能性の高いESTではない)とし、UTCに変換します。これらの時間に関連する明確なタイムゾーンでは、カレンダーの予定が異なるタイムゾーンのユーザーによって読み取られると、OutlookとGoogleは残りの部分を処理できます。

こちらがお役に立てば幸いです。

+0

これは動作しません。私はコンピュータを東部標準時に変更し、インターネットカレンダーをOutlookに同期させます。コードを実行すると、Outlookの内部で1時間も時間がかかるようになります。タイムゾーンを設定しようとしましたが、決して動作しません。 – GS442

+0

私はあなたが書いたコードを実行しているのですか、コードですでに処理されているOutlookの予定(またはGoogleカレンダーの予定)から直接アクセスしていますか、間違っているかもしれません。 – Dustin

+0

これは、OutlookまたはGoogleカレンダーと同期するライブiCalフィードを意味します。ユーザーがOutlookのインターネットカレンダーを購読すると、5分ごとにページがポーリングされ、変更が適用されます。 – GS442

関連する問題