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);
イベントはカレンダーに追加されますが、日付が間違っています。日付はカレンダーで 1 か月進みます。解析した日付は 2013 年 1 月 18 日金曜日ですが、カレンダー イベントは 2013 年 2 月 18 日月曜日に作成されます。これは私のタイムゾーンに関係していますか? (私はすでに java.util.timezone.default でデフォルトのタイムゾーンを使用しています)。
どんな助けでも大歓迎です。
ありがとう!