Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

iCalendar

查看数: 3187 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-4-27 11:29

正文摘要:

本帖最后由 java 于 2018-5-7 15:11 编辑 iCalendar,简称“iCal”,是“日历数据交换”的标准(RFC 2445),该标准提供了一种公共的数据格式用于存储关于日历方面的信息,比如事件、约定、待办事项等。它不仅允 ...

回复

java 发表于 2018-5-18 11:39:50
java 发表于 2018-5-17 09:43:39
java 发表于 2018-5-16 14:12:56
java 发表于 2018-5-7 18:12:32
本帖最后由 java 于 2018-5-7 18:13 编辑

协调世界时,又称世界统一时间,世界标准时间,国际协调时间,简称UTC
不属于任意时区   
中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8。


世界时
本初子午线的平子夜起算的平太阳时
英文:UT(Universal Time)
以本初子午线的平子夜起算的平太阳时。又称格林尼治平时格林尼治时间。各地的地方平时与世界时之差等于该地的地理经度。1960年以前曾作为基本时间计量系统被广泛应用。由于地球自转速度变化的影响,它不是一种均匀的时间系统。后来世界时先后被历书时原子时所取代,但在日常生活、天文导航、大地测量和宇宙飞行等方面仍属必需;同时,世界时反映地球自转速率的变化,是地球自转参数之一,仍为天文学和地球物理学的基本资料。

java 发表于 2018-4-27 11:31:28
本帖最后由 java 于 2018-5-7 17:53 编辑

iCalendar 编程基础:了解和使用 iCal4j
iCalendar 简介
iCalendar,简称“iCal”,是“日历数据交换”的标准(RFC 2445),该标准提供了一种公共的数据格式用于存储关于日历方面的信息,比如事件、约定、待办事项等。它不仅允许用户通过电子邮件发送会议或者待办事件等,也允许独立使用,而不局限于某种传输协议。
目前,所有流行日历工具比如:Lotus Notes、Outlook、GMail 和 Apple 的 iCal 都支持 iCalendar 标准,其文件扩展名为 .ical、.ics、.ifb 或者 .icalendar。C&S(Calendaring and Scheduling) 核心对象是一系列日历和行程安排信息。通常情况下,这些日历和行程信息仅仅包含一个 iCalendar 组件(iCalendar 组件分为 Events(VEVENT)、To-do(VTODO)、Journal(VJOURNAL)、Free/busy time (VFREEBUSY)、VTIMEZONE (time zones) 和 VALARM (alarms)),但是多个 iCalendar 组件可以被组织在一起。
C&S 核心对象第一行必须是“BEGIN:VCALENDAR”, 并且最后行必须是“END:VCALENDAR”。在这两行之间主要是由一系列日历属性和一个或者多个 iCalendar 组件组成。
下面看一个例子,它表示发生在 1997 年七月十四日下午五点与 1997 年七月十五日四点之间的事件“Bastille Day Party”。

  1. BEGIN:VCALENDAR                   ------ 起始
  2. VERSION:2.0                       ------ 版本
  3. PRODID:iCal4j v1.0//EN            ------ 创建该对象的标志符
  4. BEGIN:VEVENT                      ------ 事件开始
  5. DTSTART:19970714T170000Z          ------ 事件起始时间
  6. DTEND:19970715T040000Z            ------ 事件结束时间
  7. SUMMARY:Bastille Day Party        ------ 事件概要
  8. END:VEVENT                        ------ 事件结束
  9. END:VCALENDAR                     ------ 结束
复制代码





iCalendar 编程基础
iCal4j 简介
iCal4j(产生于 2004 年 4 月,目前是 2.0 版本),是一组读写 iCalendar 数据流的 Java API,支持 iCalendar 规范 RFC 2445,主要包括解析器、对象模型以及生成器。
文件读写
任何一种文件格式读写都是最基本的操作,清单 1 向我们演示了这两项基本操作。CalendarBuilder 对象是用来通过输入流解析和构造 iCalendar 模型。值得注意的是, CalendarBuilder 并不是 线程安全的。

RFC 2445 定义了很多关联组件属性,例如 Attendee、Contact、Organizer、Recurrence ID、UID 等。在这里,着重介绍一下组件(VEVENT、VTODO、VJOURNAL、VFREEBUSY)属性 – 唯一标志符 UID。UID 必须是一个全球唯一标志符,在 iCal4j 中可以使用 UidGenerator 来生成唯一标志符。UID 是用来代表一个日历组件,经常被应用程序用来匹配后来的各种请求,例如修改、删除、 回复等,对应用程序之间通讯起着非常重要的作用。举个简单的例子,GMail 用户 A 创建了一个会议,并邀请一个 Lotus Notes 用户 B 参加。这时,B 将收到一封来自 GMail 的邮件,决定是否接受会议邀请并通知用户 A。GMail 系统如何知道来自 B 的通知(Notification)是关于哪个会议的呢?答案是 UID。


循环事件
iCalendar 规范支持循环事件,即事件不止一次发生,通常使用一系列的日期(RDATE)或者一个循环规则(RRULE)。现在列举一个简单的 RRULE 例子。
事件每间隔一月,在每个月的 29 日发生。
RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=29
注意:非闰年二月份只有 28 天,因此这条规则将表示事件在上一年的 12 月份和 4 月之间将有一个跳跃。


时间和时区
iCal4j 提供了自己的 Date/Time 和 TimeZone 实现,与之相关的类主要有 Date、DateTime、TimeZone、TimeZoneRegistry、ZoneInfo 和 TzUrl 等。
Date 对象表示一个日期(不包括时间),而 DateTime 对象则表示日期(包含时间)。如果表示一个 UTC 时间,则只需要在时间之后加上一个“Z ”,如 DTSTART:19980119T070000Z。另外,也可以对一个时间指定一个时区,
例如 DTSTART;TZID=US-Eastern:19980119T020000。
或 DTSTART;TZID=GMT+0800:20180507T160000



https://github.com/ical4j/ical4j/wiki/Examples
ical4j 实现ICS文件的生成和解析



QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-5-22 10:29 , Processed in 0.067052 second(s), 23 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表