8.1 Timestamps

时间戳是以特定格式表示的日期(可附带时间或时间区间), 形如 ‘<2003-09-16 Tue>’ 、 ‘<2003-09-16 Tue 09:39>’ 或 ‘<2003-09-16 Tue 12:00-12:30>60。 时间戳可以出现在 Org 树形条目的标题或正文中的任意位置。 它会让对应条目显示在日程表中的指定日期(见 Weekly/daily agenda)。 主要分为以下几类:

Plain timestamp; Event; Appointment

普通时间戳仅为条目分配一个日期/时间, 就像在纸质日程本上记下约会或事件一样。 在日程视图中,带有普通时间戳的条目标题 会精确显示在对应日期上。一个条目可以包含多个时间戳。

* Meet Peter at the movies
  <2006-11-01 Wed 19:15>
* Discussion on climate change
  <2006-11-02 Thu 10:00-12:00>
* My days off
  <2006-11-03 Fri>
  <2006-11-06 Mon>
Timestamp with repeater interval

时间戳可以包含 重复周期(repeater interval) ,表示它不仅适用于指定日期, 还会在每隔 N 小时(h)、天(d)、周(w)、月(m) 或年(y)后重复出现。下例每周三都会在日程表中显示:

* Pick up Sam at school
  <2007-05-16 Wed 12:30 +1w>
Diary-style expression entries

对于更复杂的日期规则,Org mode 支持使用 Emacs Calendar package 中实现的特殊表达式日记条目61。 例如,带可选时间的写法:

* 22:00-23:00 The nerd meeting on every 2nd Thursday of the month
  <%%(diary-float t 4 2) 22:00-23:00>
时间区间

时间区间是由 ‘-’ 连接两个时间单位的时间戳。

* Discussion on climate change
   <2006-11-02 Thu 10:00-12:00>
Time/Date range

由 ‘--’ 连接的两个时间戳表示一个时间段。 在日程表中,条目标题会显示在区间的第一天、最后一天, 以及区间内所有被展示的日期上。第一个示例只指定日期区间, 第二个示例则为每一天指定了时间区间。

** Meeting in Amsterdam
   <2004-08-23 Mon>--<2004-08-26 Thu>
** This weeks committee meetings
   <2004-08-23 Mon 10:00-11:00>--<2004-08-26 Thu 10:00-11:00>
Inactive timestamp

格式与普通时间戳类似,但使用方括号而非尖括号。 这类时间戳为 非活动 状态, 不会 让条目显示在日程表中。

* Gillian comes late for the fifth time
  [2006-11-01 Wed]

Footnotes

(60)

Org 日期格式参考标准 ISO 8601 日期/时间格式。如需使用其他格式,参见 Custom time format。手动输入日期时星期名为可选项,而 Org 自动插入或修改的日期会添加该名称以便阅读。

(61)

使用标准日记表达式函数时需格外注意参数顺序,其顺序受变量 calendar-date-style 影响。例如指定 2005 年 12 月 1 日,调用形式可能为 ‘(diary-date 12 1 2005)’ 、 ‘(diary-date 1 12 2005)’ 或 ‘(diary-date 2005 12 1)’ ,极易造成混淆。Org 模式用户可使用专用函数 org-dateorg-anniversaryorg-cyclicorg-block ,用法与对应 diary- 函数一致,但参数固定为 ISO 顺序(年、月、日),不受 calendar-date-style 影响。