组织模式:如何安排每月第一个星期六的重复任务?

ste*_*ran 13 org-mode

我正在使用org-mode来安排任务.

是否有一种直接的方式来安排在每个月的第一个星期六发生的任务?

nbe*_*rth 14

org-float现在已经过时了(参见本提交).从现在开始,你将不得不用它diary-float来代替org-float.

(对不起噪音:这不值得一个完整的答案,但是现在我没有足够的"声誉"来评论.)


Dai*_*rod 8

组织模式有很好的文档,使用它. (info "(org) Deadlines and scheduling")

您可以在计划和截止日期条目中使用带有转发器的时间戳.组织模式将基于时间戳代表最近的转发器实例的假设发出早期和晚期警告.然而,在调度和截止时间戳中使用诸如"<%%(日记 - 浮点数42)>"之类的日记性别条目是有限的.组织模式对每个性别函数的内部结构不太了解,无法发出早期和晚期警告.但是,它会在sexp条目匹配的每一天显示该项目.

* My Task
  <%%(diary-float t 6 1)>
Run Code Online (Sandbox Code Playgroud)

  • 请务必注意下面的nberth的"答案":org-float现在已经过时,你需要使用diary-float,它的语法略有不同. (4认同)

cfy*_*cfy 5

信息说,在调度和截止时间戳中使用sexp是有限的

组织模式对每个性别函数的内部结构不太了解,无法发出早期和晚期警告.

我编写了一个elisp代码来自动更改时间戳,使用它,您需要做的就是设置一个属性.

elisp代码在这里

  1. 添加(load "/path/to/next-spec-day")到您的dot emacs文件.

  2. 设置NEXT-SPEC-DEADLINE和/或NEXT-SPEC-SCHEDULEDTODO任务的属性,如下所示:

    * test
      :PROPERTIES:
      :NEXT-SPEC-SCHEDULED: (org-float t 6 1)
      :END:
    
    Run Code Online (Sandbox Code Playgroud)

    NEXT-SPEC-SCHEDULED的值是一个sexp将返回,non-nil如果date是该月的第一个星期六

  3. 然后,当您更改该任务的TODO状态时,时间戳将自动更改(包括警告设置的提前期).它变为:

    * TODO test
      SCHEDULED: <2013-01-05 Sat>
      :PROPERTIES:
      :NEXT-SPEC-SCHEDULED: (org-float t 6 1)
      :END:
    
    Run Code Online (Sandbox Code Playgroud)