wef*_*fwe 30 icalendar calendar
我正在使用ASP.NET创建一个ics文件,用于将假日导入Outlook 2007并尝试设置全天事件标志.这在多日假期中工作正常,但是单日,它似乎没有注册,我只是从午夜到午夜预订了一个"奇点假期".
根据MSDN,将开始和结束时间设置为00:00应该足以执行此操作.我也尝试过使用X-MICROSOFT-CDO-ALLDAYEVENT和X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT标志,但它们似乎没有任何效果.
谁能看到我哪里出错了?我在下面列出了样品输出.
BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
CLASS:PUBLIC
DESCRIPTION:HOLIDAY\n
DTEND;VALUE=DATE:20090727
DTSTAMP:20091111T000000Z
DTSTART;VALUE=DATE:20090727
LAST-MODIFIED:20091111T000000Z
PRIORITY:5
SEQUENCE:0
SUMMARY;LANGUAGE=en-gb:HOLIDAY
TRANSP:OPAQUE
X-ALT-DESC;FMTTYPE=text/html:HOLIDAY
X-MICROSOFT-CDO-BUSYSTATUS:OOF
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MS-OLK-ALLOWEXTERNCHECK:TRUE
X-MS-OLK-CONFTYPE:0
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)
Mar*_*eck 39
@IceCool是对的 - 简单地省略DTEND是不够的......它将取决于DTSTART是否有效的数据类型.
规范说如果DTSTART有一个DATE数据类型,并且没有,DTEND则事件在它开始的那天结束时结束.但是如果DTSTART有一个完整的DATE-TIME数据类型,并且没有DTEND那么它就会在它启动的同时完成.
它位于RFC 5545的第3.6.1节(http://tools.ietf.org/html/rfc5545#page-54)中:
对于"VEVENT"日历组件指定具有DATE值类型但没有"DTEND"或"DURATION"属性的"DTSTART"属性的情况,事件的持续时间为一天.对于"VEVENT"日历组件指定具有DATE-TIME值类型但没有"DTEND"属性的"DTSTART"属性的情况,事件在"DTSTART"属性指定的相同日历日期和时间结束.
所以,结果是,要获得一整天的活动,这还不够:
DTSTART:20100101T000000
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为数据类型是DATE-TIME,因此事件的结束与开始相同.要创建一整天活动,您需要添加一个显式DTEND(也是类型DATE-TIME):
DTSTART:20100101T000000
DTEND:20100102T000000
Run Code Online (Sandbox Code Playgroud)
或使用DATE数据类型,然后不需要DTEND:
DTSTART;VALUE=DATE:20100101
Run Code Online (Sandbox Code Playgroud)
Bee*_*son 23
以上评论RE:在Apple的iCal中对我不起作用的第二天午夜.为了解决这个问题,在每个BEGIN:VEVENT部分中,我输出日期如下:
DTSTART;VALUE=DATE:20100101
DTEND;VALUE=DATE:20100101
Run Code Online (Sandbox Code Playgroud)
我不知道你是否仍然需要微软的标签?!
找到了答案。要举办全天活动,您需要在第二天的午夜结束预约。
| 归档时间: |
|
| 查看次数: |
40141 次 |
| 最近记录: |