我正在附上.ics文件,其中包含我发送给用户的电子邮件。它的工作正常,除了日期和时间。目前,当我双击附加的.ics文件时,我得到系统日期和时间。我无法将自己的日期列值从数据库添加到日历中。真的很感激一些帮助。 这是.ics文件的内容:
string calLocation = eventRecordAfterInsert.location;
string calSubject = eventRecordAfterInsert.eventName;
string calDescription = "Event Schedule Description";
DateTime? calDate = eventRecordAfterInsert.eventDt;
DateTime? calTime = Convert.ToDateTime(row.Cells[11].Text);
DateTime calEventDateAndTime = calDate.Value.Date + calTime.Value.TimeOfDay;
String[] contents = { "BEGIN:VCALENDAR",
"VERSION:2.0",
"PRODID:-//flo Inc.//FloSoft//EN",
"METHOD:PUBLISH",
"BEGIN:VEVENT",
//"UID:{0}",
"DTSTAMP:" + calEventDateAndTime,
"DTEND:" + calEventDateAndTime,
"Location:"+ calLocation,
"Description;Encoding=QUOTED-PRINTABLE:" + calSubject,
"Summary:" + calDescription,
"Priority:3",
"BEGIN:VALARM",
"TRIGGER:-PT15M",
"ACTION:DISPLAY",
"DESCRIPTION:Reminder",
"END:VALARM",
"END:VEVENT", "END:VCALENDAR" };
System.IO.File.WriteAllLines(Server.MapPath("EventDetails.ics"), contents);
答案 0 :(得分:1)
ICS文件中的日期字符串应采用yyyyMMddTHHmmssZ
格式。所以而不是:
"DTSTAMP:" + calEventDateAndTime,
你应该这样做:
"DTSTAMP:" + calEventDateAndTime.ToUniversalTime().ToString("yyyyMMddTHHmmssZ"),
或者,因为您重复了该值,所以在将其附加到字符串数组之前将其移出到另一个变量中。
您还尝试将DateTime
的时间组件添加到另一个带有日期组件的DateTime
,但我认为它不会起作用你想要它的方式。您必须重新考虑这种方法,可能将时间组件解析出单元格并将其添加到日期中:
DateTime? calDate = eventRecordAfterInsert.eventDt;
TimeSpan calTime = TimeSpan.Parse(row.Cells[11].Text);
DateTime calEventDateAndTime = calDate.Value.Date.Add(calTime);
或者将两个DateTime
结构组合成第三个结构:
DateTime calEventDateAndTime = new DateTime(calDate.Value.Year,
calDate.Value.Month,
calDate.Value.Day,
calTime.Value.Hour,
calTime.Value.Minute,
calTime.Value.Second);
此外,您还没有检查calDate
或calTime
是否有值,所以我没有看到将它们Nullable<DateTime>
做出来的重点。