C# .ics文件中的System.Date
我正在附加一个.ics文件以及发送给用户的电子邮件。除了日期和时间外,它工作正常。目前,当我双击附加的.ics文件时,我会得到系统日期和时间。我无法将从数据库获取的自己的日期列值添加到日历中。非常感谢你的帮助。 以下是.ics文件的内容:C# .ics文件中的System.Date,c#,C#,我正在附加一个.ics文件以及发送给用户的电子邮件。除了日期和时间外,它工作正常。目前,当我双击附加的.ics文件时,我会得到系统日期和时间。我无法将从数据库获取的自己的日期列值添加到日历中。非常感谢你的帮助。 以下是.ics文件的内容: string calLocation = eventRecordAfterInsert.location; string calSubject = eventRecordAfterInsert.eventName
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);
ICS文件中的日期字符串应采用
yyyymmddthhmmsz
格式。因此,不是:
"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
是否有值,因此,我不认为将它们设为可空的有什么意义。那么,所有这些cal*
变量都定义在哪里?@Cory:编辑了上述代码,因为我在calEventDateAndTime中添加了日期和时间,所以不允许我转换为system.datetime。如果我错了,请更正。@user3254765:您必须创建一个新的DateTime
,类似于:DateTime combined=newdatetime(calDate.Value.Year,calDate.Value.Month,calDate.Value.Day,calTime.Value.Hour,calTime.Value.Minute,calTime.Value.Second)
然后使用组合的代替上面的CaleventDate和time
:日期现在在日历中与开始时间一起工作。如何将30分钟添加到结束时间?@user3254765:calEventDateAndTime.AddMinutes(30).ToUniversalTime().ToString(“yyyymmddthhmmsz”),