首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将事件添加到日历会显示错误的时间,但保存后时间是正确的

将事件添加到日历会显示错误的时间,但保存后时间是正确的
EN

Stack Overflow用户
提问于 2019-04-11 00:53:58
回答 1查看 255关注 0票数 0

我有一个按钮可以将事件添加到日历中。代码工作正常,事件被正确添加,但当日历事件显示为保存时,时间显示不正确。事件是下午4-6点,日历添加事件显示12 6pm 2 6pm,这显然是一个时区问题,但当保存事件(不更改时间)时,它会正确显示下午4-6点

这是添加事件和结果的代码和屏幕截图:

代码语言:javascript
运行
复制
Intent eventValues = new Intent(Intent.ActionInsert);
eventValues.SetData(CalendarContract.Events.ContentUri);
eventValues.SetType("vnd.android.cursor.item/event");

eventValues.PutExtra(CalendarContract.Events.InterfaceConsts.Title, "Event Title");
eventValues.PutExtra(CalendarContract.Events.InterfaceConsts.Description, "Event Description");
eventValues.PutExtra(CalendarContract.ExtraEventBeginTime, GetDateTimeMS(2019, 3, 12, 16, 0));
eventValues.PutExtra(CalendarContract.ExtraEventEndTime, GetDateTimeMS(2019, 3, 12, 18, 0));
eventValues.PutExtra(CalendarContract.Events.InterfaceConsts.EventTimezone, "America/New_York");
eventValues.PutExtra(CalendarContract.Events.InterfaceConsts.EventEndTimezone, "America/New_York");
eventValues.PutExtra(CalendarContract.Events.InterfaceConsts.EventLocation, "Event Location");

StartActivity(eventValues);

添加事件:

结果:

你知道我怎么才能让它显示正确的时间吗?

更新

不管怎样,问题出在我从Xamarin Docs得到的GetDateTimeMS函数中。我不得不将时区从默认更改为实际的TZ:

代码语言:javascript
运行
复制
long GetDateTimeMS(int yr, int month, int day, int hr, int min)
{
    //Calendar c = Calendar.GetInstance(Java.Util.TimeZone.Default);
    Calendar c = Calendar.GetInstance(Java.Util.TimeZone.GetTimeZone("America/New_York"));

    c.Set(Java.Util.CalendarField.DayOfMonth, day);
    c.Set(Java.Util.CalendarField.HourOfDay, hr);
    c.Set(Java.Util.CalendarField.Minute, min);
    c.Set(Java.Util.CalendarField.Month, month);
    c.Set(Java.Util.CalendarField.Year, yr);

    return c.TimeInMillis;
}
EN

回答 1

Stack Overflow用户

发布于 2019-04-11 02:30:32

问题出在我从Xamarin Docs得到的GetDateTimeMS函数中。我不得不将时区从默认更改为实际的TZ:

代码语言:javascript
运行
复制
long GetDateTimeMS(int yr, int month, int day, int hr, int min)
{
    //Calendar c = Calendar.GetInstance(Java.Util.TimeZone.Default);
    Calendar c = Calendar.GetInstance(Java.Util.TimeZone.GetTimeZone("America/New_York"));

    c.Set(Java.Util.CalendarField.DayOfMonth, day);
    c.Set(Java.Util.CalendarField.HourOfDay, hr);
    c.Set(Java.Util.CalendarField.Minute, min);
    c.Set(Java.Util.CalendarField.Month, month);
    c.Set(Java.Util.CalendarField.Year, yr);

    return c.TimeInMillis;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55617743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档