首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iCal时区问题

iCal时区问题
EN

Stack Overflow用户
提问于 2016-05-16 13:36:40
回答 1查看 1.2K关注 0票数 1

我试图允许用户在ASP.Net中下载日历的ASP.Net,但存在时区问题。

如果我在我的计算机上下载文件,时间似乎是正确的,在正确的时间框架内。但是,当我尝试在手机上下载它时,时区切换到5小时后(也就是早上7:00变成凌晨3:00 )。

有人知道如何解决这个问题/设置时区吗?

以下是代码:

代码语言:javascript
复制
        iCalendar iCal = new iCalendar();

        Event evt = iCal.Create<Event>();

        DateTime dt = (DateTime)Convert.ToDateTime(lblTicketDue.Text);

        Console.Write(dt);

        evt.Start = new iCalDateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second);
        evt.End = new iCalDateTime((DateTime)Convert.ToDateTime(lblTicketDue.Text).AddMinutes(15.0));
        Alarm alarm = new Alarm();
        alarm.Action = AlarmAction.Display;
        alarm.Summary = "Ticket due!";
        Trigger t = new Trigger();
        iCalDateTime icdt = new iCalDateTime(dt.Subtract(TimeSpan.FromMinutes(120.0)));
        t.DateTime = icdt;
        alarm.Trigger = t;


        evt.Alarms.Add(alarm);
        iCal.Events.Add(evt);

        iCalendarSerializer serializer = new iCalendarSerializer();
        string output = serializer.SerializeToString(iCal);

        Response.ContentType = "text/calendar";
        Response.Write(output);
        Response.End();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-17 07:46:17

如果不查看生成的实际iCalendar流很难判断,但很可能是使用浮动时间生成DTSTART/DTEND (例如"20160517T070000“)。如果事件不是重复发生的(没有RRULE),您要做的是将日期时间转换为UTC,并使用https://www.rfc-editor.org/rfc/rfc5545#section-3.3.5中描述的“日期与UTC时间”格式,即类似于“20160517Tx0000Z”的格式

如果事件是重复发生的,那么您将需要使用最后一个表单(日期与本地时间和时区引用)。

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

https://stackoverflow.com/questions/37255268

复制
相关文章

相似问题

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