1

Google api v3 を使用して Google カレンダーにイベントを挿入しようとしていますが、挿入中にエラーが発生します。c# を使用しています。

エラー:

Google.Api.Requests.RequestError

開始時刻と終了時刻が無効または一致していません。[400]

エラー [メッセージ [開始時刻と終了時刻が無効または一致しません。] 場所 [ - ] 理由 [無効] ドメイン [グローバル]

EventDateTime の私のコードはこちらです。

            EventDateTime EventStartDTime = new EventDateTime();
            EventStartDTime.Date = "2013-06-03";
            EventStartDTime.DateTime = "2013-06-03T10:00:00.000+05:00";
            EventStartDTime.TimeZone = "Asia/Karachi";

            EventDateTime EventEndtDTime = new EventDateTime();
            EventEndtDTime.Date = "2013-06-05";
            EventEndtDTime.DateTime = "2013-06-05T10:00:00.000+05:00";
            EventEndtDTime.TimeZone = "Asia/Karachi";

誰でもこの問題を解決するのを手伝ってもらえますか?

4

4 に答える 4

4

Google カレンダー V3 API のタイムスタンプには UTC 形式が必要なため、日時とタイムゾーン (オプション) を指定できるため、現在のタイムゾーンを自動的に取得する以下の形式を指定する必要があります。

            DateTime start = DateTime.Now;
            DateTime end = start + TimeSpan.FromMinutes(30);

            var curTZone = TimeZone.CurrentTimeZone;
            var dateStart = new DateTimeOffset(start, curTimeZone.GetUtcOffset(start));
            var dateEnd = new DateTimeOffset(end, curTimeZone.GetUtcOffset(end));
            var startTimeString = dateStart.ToString("o");
            var endTimeString = dateEnd.ToString("o");             

            evnt.Start = new EventDateTime()
            {                    
                DateTime = startTimeString 
            };

            evnt.End = new EventDateTime()
            {
                DateTime = endTimeString
            };

この助けを願っています。

于 2013-10-28T09:20:42.480 に答える
0

特定の時間にイベントを (作成するのではなく) 更新するときに、darthlukan の回答のようにタイム ゾーンを指定してもうまくいきませんでした。ただし、DateTimeKind を現地時間に設定するとうまくいきました。

DateTime start = DateTime.Now;
DateTime end = start + TimeSpan.FromMinutes(30);
start = DateTime.SpecifyKind(start, DateTimeKind.Local);
end = DateTime.SpecifyKind(end, DateTimeKind.Local);

Event newEvent = new Event();
newEvent.Start = new EventDateTime() { DateTime = start };
newEvent.End = new EventDateTime() { DateTime = end };
于 2016-07-12T22:13:33.740 に答える