我正在开源应用程序中同步Google和Outlook之间的日历。一些用户报告了几年前开始日期反复约会的一些奇怪行为。下面是示例代码,所有断言都通过。我的问题是为什么从1970-10-14T08:00:00.000Z开始预约时间由API转移到09:00:00 + 01:00,如果我将开始日期转换到2000年,则转入10:00:00 +02:00?当我检查这两个事件看起来如何在谷歌他们也开始在不同的时间,在我看来应该启动的同一时间(只有年改变)使用Google API创建的定期年度预约
var e1 = new Google.Apis.Calendar.v3.Data.Event();
e1.Summary = "Birthday1";
e1.Start = new EventDateTime();
e1.End = new EventDateTime();
e1.Start.DateTime = new DateTime(1970, 10, 14, 10, 0, 0);
e1.End.DateTime = new DateTime(1970, 10, 14, 11, 0, 0);
e1.Start.TimeZone = "Europe/Warsaw";
e1.End.TimeZone = "Europe/Warsaw";
e1.Recurrence = new List<String>();
e1.Recurrence.Add("RRULE:FREQ=YEARLY;BYMONTHDAY=14;BYMONTH=10");
Assert.AreEqual("1970-10-14T08:00:00.000Z", e1.Start.DateTimeRaw);
var c1 = service.Insert(e1, primaryCalendar.Id).Execute();
Assert.AreEqual("1970-10-14T09:00:00+01:00", c1.Start.DateTimeRaw); // 09:00:00+01:00
var e2 = new Google.Apis.Calendar.v3.Data.Event();
e2.Summary = "Birthday2";
e2.Start = new EventDateTime();
e2.End = new EventDateTime();
e2.Start.DateTime = new DateTime(2000, 10, 14, 10, 0, 0);
e2.End.DateTime = new DateTime(2000, 10, 14, 11, 0, 0);
e2.Start.TimeZone = "Europe/Warsaw";
e2.End.TimeZone = "Europe/Warsaw";
e2.Recurrence = new List<String>();
e2.Recurrence.Add("RRULE:FREQ=YEARLY;BYMONTHDAY=14;BYMONTH=10");
Assert.AreEqual("2000-10-14T08:00:00.000Z", e2.Start.DateTimeRaw);
var c2 = service.Insert(e2, primaryCalendar.Id).Execute();
Assert.AreEqual("2000-10-14T10:00:00+02:00", c2.Start.DateTimeRaw); //10:00:00+02:00
而且我想知道什么,我需要做的将旧的重复约会正确保存到Google?我应该有一些独立的逻辑,这取决于年?
非常感谢您的帮助!
想用1月份来测试它。我想知道这是否是夏令时问题。 – DaImTo