我试图允许用户在ASP.Net中下载日历的ASP.Net,但存在时区问题。
如果我在我的计算机上下载文件,时间似乎是正确的,在正确的时间框架内。但是,当我尝试在手机上下载它时,时区切换到5小时后(也就是早上7:00变成凌晨3:00 )。
有人知道如何解决这个问题/设置时区吗?
以下是代码:
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();发布于 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”的格式
如果事件是重复发生的,那么您将需要使用最后一个表单(日期与本地时间和时区引用)。
https://stackoverflow.com/questions/37255268
复制相似问题