org-mode:org-time-stamp-custom-formats显示午夜时间

时间:2014-04-22 11:34:55

标签: emacs customization org-mode

我希望以下列格式为我的TODO设置时间戳:

<%d/%m/%Y %a [%H:%M]>

在我.emacs我有以下内容:

(custom-set-variables
 '(org-display-custom-times t)
 '(org-time-stamp-custom-formats (quote ("<%d/%m/%Y %a [%H:%M]>" . "<%d %m %Y  %a [%H:%M]>"))))  

通过

检查该变量的值

M-x describe-variable RET org-time-stamp-custom-formats

所示:

org-time-stamp-custom-formats is a variable defined in `org.el'.
Its value is ("<%d/%m/%Y %a [%H:%M]>" . "<%d %m %Y  %a [%H:%M]>")

Documentation:
Custom formats for time stamps.  See `format-time-string' for the syntax.
These are overlaid over the default ISO format if the variable
`org-display-custom-times' is set.  Time like %H:%M should be at the
end of the second format.  The custom formats are also honored by export
commands, if custom time display is turned on at the time of export.

You can customize this variable.    

然而,当采取行动时(通过按 C-c C-s ),我总是在00:00安排我的TODO:

** TODO SCHEDULED: <22/04/2014 Tue [00:00]> 

我认为我的配置出了问题。如何更正时间戳配置?

1 个答案:

答案 0 :(得分:1)

如何使其发挥作用

  1. [%H:%M]的第一个元素中删除org-time-stamp-custom-formats部分。配置文件的相关部分应如下所示:

    (custom-set-variables
     ;; ...
     '(org-time-stamp-custom-formats (quote ("<%d/%m/%Y %a>" . "<%d %m %Y  %a [%H:%M]>"))))  
    
  2. 要安排项目,

    • 点击 C-c C-s (照例)
    • 输入时间,例如1pm10am9:0018:00
    • 点击 RET
  3. 解释

    据我所知,从浏览文档和org-mode来源的相关部分,org-mode使用

    的第一个元素
    ("<%d/%m/%Y %a [%H:%M]>" . "<%d %m %Y  %a [%H:%M]>")
    

    用于格式化 not 包含时间的日期,而第二个元素用于格式化日期。因此,当您 Cc Cs 紧接着 RET 而没有提供时间时,org-mode将尝试插入根据以下格式化的日期org-time-stamp-custom-formats第一个元素。使用您当前的配置时,这将失败(以您描述的方式),因为org-mode不知道在格式字符串中替换%H%M的内容。

    当我尝试重现您描述的行为时,让我感到困惑的事情(也可能让您感到困惑)是通过 Cc Cs调用org-schedule时出现的日期提示 以正确的格式包含(当前)时间...

    积分

    • Answer提供有关预定TODO时间戳的类似问题。