我正在使用 DateTime.Parse("01/18/2013") 来获取 DateTime 对象,然后使用下面的方法(传递所有参数)来获取以毫秒为单位的 Unix 时间戳。
long GetDateTimeMS(int yr, int month, int day, int hr, int min)
{
Calendar c = Calendar.GetInstance(Java.Util.TimeZone.Default);
c.Set(Java.Util.CalendarField.DayOfMonth, day);
c.Set(CalendarField.HourOfDay, hr);
c.Set(CalendarField.Minute, min);
c.Set(CalendarField.Month, month);
c.Set(CalendarField.Year, yr);
return c.TimeInMillis;
}
现在,当我使用以下代码在 Android 中创建日历事件时
//default timezone
Java.Util.TimeZone zone = Java.Util.TimeZone.Default;
var meetingDate = AndroidController.PoppedList[_estimateId].MeetingDate;
ContentValues values = new ContentValues();
values.Put(CalendarContract.Events.InterfaceConsts.Dtstart,
GetDateTimeMS(meetingDate.Year, meetingDate.Month,
meetingDate.Day,
meetingDate.Hour,
meetingDate.Minute));
meetingDate.AddHours(1);
values.Put(CalendarContract.Events.InterfaceConsts.Dtend,
GetDateTimeMS(meetingDate.Year,
meetingDate.Month,
meetingDate.Day,
meetingDate.Hour,
meetingDate.Minute));
values.Put(CalendarContract.Events.InterfaceConsts.Title, initTitle);
values.Put(CalendarContract.Events.InterfaceConsts.CalendarId,_mSelectedCalendarId);
values.Put(CalendarContract.Events.InterfaceConsts.EventTimezone, zone.DisplayName);
Android.Net.Uri uri = _parentActivity.ContentResolver.Insert(CalendarContract.Events.ContentUri, values);
该事件被添加到日历中,但日期错误。日期在日历中提前一个月。我解析的日期是 2013 年 1 月 18 日星期五,但日历事件是为 2013 年 2 月 18 日星期一创建的。这与我的时区有关吗?(我已经在 java.util.timezone.default 中使用了默认时区)。
任何帮助将不胜感激。
谢谢!