如何汉化agenda里面的英文

Week-agenda (W48): --- 》周历 (第48周)

Monday 26 November 2018 W48---》星期一 2018年 11月 26日 第48周

Tuesday 27 November 2018 ---》星期二 2018年 11月 27日

没有头绪!

对Org Mode了解不多,周一到周五可以用这个改:org-agenda-weekend-days

希望你能看的懂的吧

(defcustom org-agenda-format-date 'org-agenda-format-date-aligned
  "Format string for displaying dates in the agenda.
Used by the daily/weekly agenda.  This should be a format string
understood by `format-time-string', or a function returning the
formatted date as a string.  The function must take a single
argument, a calendar-style date list like (month day year)."
  :group 'org-agenda-daily/weekly
  :type '(choice
          (string :tag "Format string")
          (function :tag "Function")))

(defun org-agenda-format-date-aligned (date)
  "Format a DATE string for display in the daily/weekly agenda.
This function makes sure that dates are aligned for easy reading."
  (require 'cal-iso)
  (let* ((dayname (calendar-day-name date))
         (day (cadr date))
         (day-of-week (calendar-day-of-week date))
         (month (car date))
         (monthname (calendar-month-name month))
         (year (nth 2 date))
         (iso-week (org-days-to-iso-week
                    (calendar-absolute-from-gregorian date)))
         (weekyear (cond ((and (= month 1) (>= iso-week 52))
                          (1- year))
                         ((and (= month 12) (<= iso-week 1))
                          (1+ year))
                         (t year)))
         (weekstring (if (= day-of-week 1)
                         (format " W%02d" iso-week)
                       "")))
    (format "%-10s %2d %s %4d%s"
            dayname day monthname year weekstring)))
2 个赞

我的emacs里面找不到这个命令,谢谢你!

看不太懂,我慢慢消化。谢谢你!

好的,我先学习一下,谢谢你!

我刚才看了你的github的源代码,然后发现改变了,突破口已经找到。然后我继续调整,也结合前面的帖子信息学习,谢谢你!

在我的代码中你只需要改一个地方

    (format "%-10s %2d %s %4d%s"
            dayname day monthname year weekstring)))

format的用法

https://www.gnu.org/software/emacs/manual/html_node/elisp/Formatting-Strings.html

当你把10改成5 就会让星期离日期近一点了

好的,我马上试试,谢谢!

是的,改成5,间距就边小了,这个代码也非常有效,我好好学习下。谢谢你!

试试这段代码吧

(use-package parse-time
  :after org-agenda
  :ensure nil
  :config

  (setq parse-time-months
        (append '(("yiy" . 1) ("ery" . 2) ("sany" . 3)
                  ("siy" . 4) ("wuy" . 5) ("liuy" . 6)
                  ("qiy" . 7) ("bay" . 8) ("jiuy" . 9)
                  ("shiy" . 10) ("shiyiy" . 11) ("shiery" . 12)
                  ("yiyue" . 1) ("eryue" . 2) ("sanyue" . 3)
                  ("siyue" . 4) ("wuyue" . 5) ("liuyue" . 6)
                  ("qiyue" . 7) ("bayue" . 8) ("jiuyue" . 9)
                  ("shiyue" . 10) ("shiyiyue" . 11) ("shieryue" . 12))
                parse-time-months))

  (setq parse-time-weekdays
        (append '(("zri" . 0) ("zqi" . 0)
                  ("zyi" . 1) ("zer" . 2) ("zsan" . 3)
                  ("zsi" . 4) ("zwu" . 5) ("zliu" . 6)
                  ("zr" . 0) ("zq" . 0)
                  ("zy" . 1) ("ze" . 2) ("zs" . 3)
                  ("zsi" . 4) ("zw" . 5) ("zl" . 6))
                parse-time-weekdays)))

(use-package cal-china-x
  :after org-agenda
  :ensure nil
  :config
  (defvar eh-calendar-holidays nil)
  (setq eh-calendar-holidays
        '(;;公历节日
          (holiday-fixed 1 1 "元旦")
          (holiday-fixed 2 14 "情人节")
          (holiday-fixed 3 8 "妇女节")
          (holiday-fixed 3 14 "白色情人节")
          (holiday-fixed 4 1 "愚人节")
          (holiday-fixed 5 1 "劳动节")
          (holiday-fixed 5 4 "青年节")
          (holiday-float 5 0 2 "母亲节")
          (holiday-fixed 6 1 "儿童节")
          (holiday-float 6 0 3 "父亲节")
          (holiday-fixed 9 10 "教师节")
          (holiday-fixed 10 1 "国庆节")
          (holiday-fixed 10 24 "程序员节")
          (holiday-fixed 12 25 "圣诞节")
          ;; 农历节日
          (holiday-lunar 1 1 "春节" 0)
          (holiday-lunar 1 2 "春节" 0)
          (holiday-lunar 1 3 "春节" 0)
          (holiday-lunar 1 15 "元宵节" 0)
          (holiday-solar-term "清明" "清明节")
          (holiday-solar-term "小寒" "小寒")
          (holiday-solar-term "大寒" "大寒")
          (holiday-solar-term "立春" "立春")
          (holiday-solar-term "雨水" "雨水")
          (holiday-solar-term "惊蛰" "惊蛰")
          (holiday-solar-term "春分" "春分")
          (holiday-solar-term "谷雨" "谷雨")
          (holiday-solar-term "立夏" "立夏")
          (holiday-solar-term "小满" "小满")
          (holiday-solar-term "芒种" "芒种")
          (holiday-solar-term "夏至" "夏至")
          (holiday-solar-term "小暑" "小暑")
          (holiday-solar-term "大暑" "大暑")
          (holiday-solar-term "立秋" "立秋")
          (holiday-solar-term "处暑" "处暑")
          (holiday-solar-term "白露" "白露")
          (holiday-solar-term "秋分" "秋分")
          (holiday-solar-term "寒露" "寒露")
          (holiday-solar-term "霜降" "霜降")
          (holiday-solar-term "立冬" "立冬")
          (holiday-solar-term "小雪" "小雪")
          (holiday-solar-term "大雪" "大雪")
          (holiday-solar-term "冬至" "冬至")
          (holiday-lunar 5 5 "端午节" 0)
          (holiday-lunar 8 15 "中秋节" 0)
          (holiday-lunar 7 7 "七夕情人节" 0)
          (holiday-lunar 12 8 "腊八节" 0)
          (holiday-lunar 9 9 "重阳节" 0)))
  (setq calendar-holidays eh-calendar-holidays))

(use-package calendar
  :after org-agenda
  :ensure nil
  :config
  (setq calendar-week-start-day 0) ; 一周第一天,0表示星期天, 1表示星期一
  (setq calendar-month-name-array
        ["一月" "二月" "三月" "四月" "五月" "六月"
         "七月" "八月" "九月" "十月" "十一月" "十二月"])
  (setq calendar-day-name-array
        ["周日" "周一" "周二" "周三" "周四" "周五" "周六"])

  (defun eh-org-chinese-anniversary (year lunar-month lunar-day &optional mark)
    (if year
        (let* ((d-date (diary-make-date lunar-month lunar-day year))
               (a-date (calendar-absolute-from-gregorian d-date))
               (c-date (calendar-chinese-from-absolute a-date))
               (cycle (car c-date))
               (yy (cadr c-date))
               (y (+ (* 100 cycle) yy)))
          (diary-chinese-anniversary lunar-month lunar-day y mark))
      (diary-chinese-anniversary lunar-month lunar-day year mark))))

(use-package org-archive
  :after org-agenda
  :ensure nil
  :config
  ;; 使用 org-archive-subtree 时,原来的 header 层级容易被打乱,而且容易
  ;; 因为保存不及时而导致 archive 文件内容丢失, 所以这个命令适合每月的
  ;; 大归档, 日常情况下,使用 ARCHIVE TAG 来隐藏已经完成的任务,安全又方便。
  ;; (setq org-archive-default-command 'org-archive-subtree)
  (setq org-archive-default-command 'org-archive-set-tag)
  )

(use-package org-attach
  :after org-agenda
  :ensure nil
  :config
  (setq org-attach-commit nil)
  (setq org-attach-store-link-p 'attached)

  (defun eh-org-attach-sync-all ()
    (interactive)
    (org-map-entries #'org-attach-sync)
    (org-align-all-tags))
  )

(use-package autorevert
  :after org-agenda
  :config
  (add-hook 'org-mode-hook #'turn-on-auto-revert-mode))

(use-package org-agenda
  :bind (("C-c a" . org-agenda)
         :map org-agenda-mode-map
         ("g" . eh-org-agenda-redo-all)
         ("i" . (lambda () (interactive) (org-capture nil "s")))
         ("A" . org-agenda-archive-default-with-confirmation)
         ("J" . counsel-org-agenda-headlines)
         ("h" . ignore)
         ("y" . ignore)
         ("a" . ignore))
  :ensure nil
  :config
  (defvar eh-org-local-directory
    (cl-find-if #'file-exists-p
                '("d:/org/org-files/"
                  "d:/org/"
                  "e:/org/org-files/"
                  "e:/org/"
                  "f:/org/org-files/"
                  "f:/org/"
                  "~/org/org-files/"
                  "~/org/"
                  "~/storage/shared/org/org-files"
                  "~/storage/shared/org/")))

  (defvar eh-org-remote-directory
    eh-org-local-directory)

  (defvar eh-org-ignore-remote-directory nil)

  (setq org-agenda-custom-commands
        '(;; 大归档只适用于一级项目,并且这个项目已经在平常通过 ARCHIVE 标签隐藏了。
          ("A" "Find all projects which need archive."
           tags "+LEVEL=1+ARCHIVE+TODO={DONE\\|CANCELED}"
           ;; search "+{^\\*\\s-+\\(DONE\\|CANCELED\\)} +{:ARCHIVE:}"
           ((org-agenda-skip-archived-trees nil))))
        )

  ;; 我更习惯类似 google 的搜索方式。
  (setq org-agenda-search-view-always-boolean t)
  (setq org-agenda-search-view-force-full-words nil)

  (add-to-list 'org-agenda-files eh-org-local-directory t)
  (when (and (not eh-org-ignore-remote-directory)
             (not (member eh-org-remote-directory org-agenda-files)))
    (add-to-list 'org-agenda-files eh-org-remote-directory t))

  (defun eh-revert-org-buffers ()
    "Refreshes all opened org buffers."
    (interactive)
    (dolist (buf (buffer-list))
      (with-current-buffer buf
        (when (and (buffer-file-name)
                   (string-match-p "org$" (buffer-file-name))
                   (file-exists-p (buffer-file-name))
                   (not (buffer-modified-p)))
          (revert-buffer t t t) )))
    (message "Refreshed all opened org files."))

  (defun eh-org-agenda-redo-all (&optional exhaustive)
    (interactive "P")
    (eh-revert-org-buffers)
    (funcall-interactively #'org-agenda-redo-all)
    (message (substitute-command-keys
              "刷新完成,记得按快捷键 '\\[org-save-all-org-buffers]' 来保存更改。")))

  (setq org-agenda-span 'day)
  (setq org-agenda-window-setup 'only-window)
  (setq org-agenda-include-diary nil)

  (setq org-agenda-todo-ignore-scheduled t)
  (setq org-agenda-todo-ignore-deadlines t)
  (setq org-agenda-time-leading-zero nil)

  (setq org-agenda-todo-list-sublevels t)
  (setq org-agenda-todo-ignore-scheduled t)

  (setq org-agenda-time-grid
        '((daily today require-timed)
          (800 1000 1200 1400 1600 1800 2000)
          ""
          "----------------"))

  (setq  org-agenda-current-time-string
         "now - - - - - - - - - - - - -")

  ;; Set it to 'auto can not work well for Chinese user.
  (setq org-agenda-tags-column -120)

  (setq org-agenda-prefix-format
        (if (eh-termux-p)
            '((agenda  . " %-5t %s")
              (todo  . " %i")
              (tags  . " %i")
              (search . " %i"))
          '((agenda  . " %i %-20:c %5t %s")
            (todo  . " %i %-20:c ")
            (tags  . " %i %-20:c ")
            (search . " %i %-20:c "))))

  (setq org-agenda-scheduled-leaders
        '("预 " "应%02d天前开始 "))

  (setq org-agenda-deadline-leaders
        '("止 " "过%02d天后到期 " "已经过期%02d天 "))

  (setq org-agenda-format-date 'eh-org-agenda-format-date-aligned)

  (defun eh-org-agenda-format-date-aligned (date)
    (require 'cal-iso)
    (let* ((dayname (calendar-day-name date))
           (day (cadr date))
           (day-of-week (calendar-day-of-week date))
           (month (car date))
           (monthname (calendar-month-name month))
           (year (nth 2 date))
           (iso-week (org-days-to-iso-week
                      (calendar-absolute-from-gregorian date)))
           (weekyear (cond ((and (= month 1) (>= iso-week 52))
                            (1- year))
                           ((and (= month 12) (<= iso-week 1))
                            (1+ year))
                           (t year)))
           (cn-date (calendar-chinese-from-absolute
                     (calendar-absolute-from-gregorian date)))
           (cn-year (cadr cn-date))
           (cn-month (cl-caddr cn-date))
           (cn-day (cl-cadddr cn-date))
           (cn-month-name
            ["正月" "二月" "三月" "四月" "五月" "六月"
             "七月" "八月" "九月" "十月" "冬月" "腊月"])
           (cn-day-name
            ["初一" "初二" "初三" "初四" "初五" "初六" "初七" "初八" "初九" "初十"
             "十一" "十二" "十三" "十四" "十五" "十六" "十七" "十八" "十九" "二十"
             "廿一" "廿二" "廿三" "廿四" "廿五" "廿六" "廿七" "廿八" "廿九" "三十"
             "卅一" "卅二" "卅三" "卅四" "卅五" "卅六" "卅七" "卅八" "卅九" "卅十"])
           (extra (format "(%s%s%s%s)"
                          (if (or (eq org-agenda-current-span 'day)
                                  (= day-of-week 1)
                                  (= cn-day 1))
                              (aref cn-month-name (1-  (floor cn-month)))
                            "")
                          (if (or (= day-of-week 1)
                                  (= cn-day 1))
                              (if (integerp cn-month) "" "[闰]")
                            "")
                          (aref cn-day-name (1- cn-day))
                          (if (or (= day-of-week 1)
                                  (eq org-agenda-current-span 'day))
                              (format ",第%02d周" iso-week)
                            ""))))
      (format "%04d-%02d-%02d %s %s"
              year month day dayname extra))))
6 个赞

好的,这段代码内容很丰富,我先学习和消化。

谢谢你!

[quote=“laub, post:11, topic:7711, full:true”][quote=“tumashu, post:10, topic:7711, full:true”] 试试这段代码吧

(use-package parse-time
  :after org-agenda
  :ensure nil
  :config

  (setq parse-time-months
        (append '(("yiy" . 1) ("ery" . 2) ("sany" . 3)
                  ("siy" . 4) ("wuy" . 5) ("liuy" . 6)
                  ("qiy" . 7) ("bay" . 8) ("jiuy" . 9)
                  ("shiy" . 10) ("shiyiy" . 11) ("shiery" . 12)
                  ("yiyue" . 1) ("eryue" . 2) ("sanyue" . 3)
                  ("siyue" . 4) ("wuyue" . 5) ("liuyue" . 6)
                  ("qiyue" . 7) ("bayue" . 8) ("jiuyue" . 9)
                  ("shiyue" . 10) ("shiyiyue" . 11) ("shieryue" . 12))
                parse-time-months))

  (setq parse-time-weekdays
        (append '(("zri" . 0) ("zqi" . 0)
                  ("zyi" . 1) ("zer" . 2) ("zsan" . 3)
                  ("zsi" . 4) ("zwu" . 5) ("zliu" . 6)
                  ("zr" . 0) ("zq" . 0)
                  ("zy" . 1) ("ze" . 2) ("zs" . 3)
                  ("zsi" . 4) ("zw" . 5) ("zl" . 6))
                parse-time-weekdays)))

(use-package cal-china-x
  :after org-agenda
  :ensure nil
  :config
  (defvar eh-calendar-holidays nil)
  (setq eh-calendar-holidays
        '(;;公历节日
          (holiday-fixed 1 1 "元旦")
          (holiday-fixed 2 14 "情人节")
          (holiday-fixed 3 8 "妇女节")
          (holiday-fixed 3 14 "白色情人节")
          (holiday-fixed 4 1 "愚人节")
          (holiday-fixed 5 1 "劳动节")
          (holiday-fixed 5 4 "青年节")
          (holiday-float 5 0 2 "母亲节")
          (holiday-fixed 6 1 "儿童节")
          (holiday-float 6 0 3 "父亲节")
          (holiday-fixed 9 10 "教师节")
          (holiday-fixed 10 1 "国庆节")
          (holiday-fixed 10 24 "程序员节")
          (holiday-fixed 12 25 "圣诞节")
          ;; 农历节日
          (holiday-lunar 1 1 "春节" 0)
          (holiday-lunar 1 2 "春节" 0)
          (holiday-lunar 1 3 "春节" 0)
          (holiday-lunar 1 15 "元宵节" 0)
          (holiday-solar-term "清明" "清明节")
          (holiday-solar-term "小寒" "小寒")
          (holiday-solar-term "大寒" "大寒")
          (holiday-solar-term "立春" "立春")
          (holiday-solar-term "雨水" "雨水")
          (holiday-solar-term "惊蛰" "惊蛰")
          (holiday-solar-term "春分" "春分")
          (holiday-solar-term "谷雨" "谷雨")
          (holiday-solar-term "立夏" "立夏")
          (holiday-solar-term "小满" "小满")
          (holiday-solar-term "芒种" "芒种")
          (holiday-solar-term "夏至" "夏至")
          (holiday-solar-term "小暑" "小暑")
          (holiday-solar-term "大暑" "大暑")
          (holiday-solar-term "立秋" "立秋")
          (holiday-solar-term "处暑" "处暑")
          (holiday-solar-term "白露" "白露")
          (holiday-solar-term "秋分" "秋分")
          (holiday-solar-term "寒露" "寒露")
          (holiday-solar-term "霜降" "霜降")
          (holiday-solar-term "立冬" "立冬")
          (holiday-solar-term "小雪" "小雪")
          (holiday-solar-term "大雪" "大雪")
          (holiday-solar-term "冬至" "冬至")
          (holiday-lunar 5 5 "端午节" 0)
          (holiday-lunar 8 15 "中秋节" 0)
          (holiday-lunar 7 7 "七夕情人节" 0)
          (holiday-lunar 12 8 "腊八节" 0)
          (holiday-lunar 9 9 "重阳节" 0)))
  (setq calendar-holidays eh-calendar-holidays))

(use-package calendar
  :after org-agenda
  :ensure nil
  :config
  (setq calendar-week-start-day 0) ; 一周第一天,0表示星期天, 1表示星期一
  (setq calendar-month-name-array
        ["一月" "二月" "三月" "四月" "五月" "六月"
         "七月" "八月" "九月" "十月" "十一月" "十二月"])
  (setq calendar-day-name-array
        ["周日" "周一" "周二" "周三" "周四" "周五" "周六"])

  (defun eh-org-chinese-anniversary (year lunar-month lunar-day &optional mark)
    (if year
        (let* ((d-date (diary-make-date lunar-month lunar-day year))
               (a-date (calendar-absolute-from-gregorian d-date))
               (c-date (calendar-chinese-from-absolute a-date))
               (cycle (car c-date))
               (yy (cadr c-date))
               (y (+ (* 100 cycle) yy)))
          (diary-chinese-anniversary lunar-month lunar-day y mark))
      (diary-chinese-anniversary lunar-month lunar-day year mark))))

(use-package org-archive
  :after org-agenda
  :ensure nil
  :config
  ;; 使用 org-archive-subtree 时,原来的 header 层级容易被打乱,而且容易
  ;; 因为保存不及时而导致 archive 文件内容丢失, 所以这个命令适合每月的
  ;; 大归档, 日常情况下,使用 ARCHIVE TAG 来隐藏已经完成的任务,安全又方便。
  ;; (setq org-archive-default-command 'org-archive-subtree)
  (setq org-archive-default-command 'org-archive-set-tag)
  )

(use-package org-attach
  :after org-agenda
  :ensure nil
  :config
  (setq org-attach-commit nil)
  (setq org-attach-store-link-p 'attached)

  (defun eh-org-attach-sync-all ()
    (interactive)
    (org-map-entries #'org-attach-sync)
    (org-align-all-tags))
  )

(use-package autorevert
  :after org-agenda
  :config
  (add-hook 'org-mode-hook #'turn-on-auto-revert-mode))

(use-package org-agenda
  :bind (("C-c a" . org-agenda)
         :map org-agenda-mode-map
         ("g" . eh-org-agenda-redo-all)
         ("i" . (lambda () (interactive) (org-capture nil "s")))
         ("A" . org-agenda-archive-default-with-confirmation)
         ("J" . counsel-org-agenda-headlines)
         ("h" . ignore)
         ("y" . ignore)
         ("a" . ignore))
  :ensure nil
  :config
  (defvar eh-org-local-directory
    (cl-find-if #'file-exists-p
                '("d:/org/org-files/"
                  "d:/org/"
                  "e:/org/org-files/"
                  "e:/org/"
                  "f:/org/org-files/"
                  "f:/org/"
                  "~/org/org-files/"
                  "~/org/"
                  "~/storage/shared/org/org-files"
                  "~/storage/shared/org/")))

  (defvar eh-org-remote-directory
    eh-org-local-directory)

  (defvar eh-org-ignore-remote-directory nil)

  (setq org-agenda-custom-commands
        '(;; 大归档只适用于一级项目,并且这个项目已经在平常通过 ARCHIVE 标签隐藏了。
          ("A" "Find all projects which need archive."
           tags "+LEVEL=1+ARCHIVE+TODO={DONE\\|CANCELED}"
           ;; search "+{^\\*\\s-+\\(DONE\\|CANCELED\\)} +{:ARCHIVE:}"
           ((org-agenda-skip-archived-trees nil))))
        )

  ;; 我更习惯类似 google 的搜索方式。
  (setq org-agenda-search-view-always-boolean t)
  (setq org-agenda-search-view-force-full-words nil)

  (add-to-list 'org-agenda-files eh-org-local-directory t)
  (when (and (not eh-org-ignore-remote-directory)
             (not (member eh-org-remote-directory org-agenda-files)))
    (add-to-list 'org-agenda-files eh-org-remote-directory t))

  (defun eh-revert-org-buffers ()
    "Refreshes all opened org buffers."
    (interactive)
    (dolist (buf (buffer-list))
      (with-current-buffer buf
        (when (and (buffer-file-name)
                   (string-match-p "org$" (buffer-file-name))
                   (file-exists-p (buffer-file-name))
                   (not (buffer-modified-p)))
          (revert-buffer t t t) )))
    (message "Refreshed all opened org files."))

  (defun eh-org-agenda-redo-all (&optional exhaustive)
    (interactive "P")
    (eh-revert-org-buffers)
    (funcall-interactively #'org-agenda-redo-all)
    (message (substitute-command-keys
              "刷新完成,记得按快捷键 '\\[org-save-all-org-buffers]' 来保存更改。")))

  (setq org-agenda-span 'day)
  (setq org-agenda-window-setup 'only-window)
  (setq org-agenda-include-diary nil)

  (setq org-agenda-todo-ignore-scheduled t)
  (setq org-agenda-todo-ignore-deadlines t)
  (setq org-agenda-time-leading-zero nil)

  (setq org-agenda-todo-list-sublevels t)
  (setq org-agenda-todo-ignore-scheduled t)

  (setq org-agenda-time-grid
        '((daily today require-timed)
          (800 1000 1200 1400 1600 1800 2000)
          ""
          "----------------"))

  (setq  org-agenda-current-time-string
         "now - - - - - - - - - - - - -")

  ;; Set it to 'auto can not work well for Chinese user.
  (setq org-agenda-tags-column -120)

  (setq org-agenda-prefix-format
        (if (eh-termux-p)
            '((agenda  . " %-5t %s")
              (todo  . " %i")
              (tags  . " %i")
              (search . " %i"))
          '((agenda  . " %i %-20:c %5t %s")
            (todo  . " %i %-20:c ")
            (tags  . " %i %-20:c ")
            (search . " %i %-20:c "))))

  (setq org-agenda-scheduled-leaders
        '("预 " "应%02d天前开始 "))

  (setq org-agenda-deadline-leaders
        '("止 " "过%02d天后到期 " "已经过期%02d天 "))

  (setq org-agenda-format-date 'eh-org-agenda-format-date-aligned)

  (defun eh-org-agenda-format-date-aligned (date)
    (require 'cal-iso)
    (let* ((dayname (calendar-day-name date))
           (day (cadr date))
           (day-of-week (calendar-day-of-week date))
           (month (car date))
           (monthname (calendar-month-name month))
           (year (nth 2 date))
           (iso-week (org-days-to-iso-week
                      (calendar-absolute-from-gregorian date)))
           (weekyear (cond ((and (= month 1) (>= iso-week 52))
                            (1- year))
                           ((and (= month 12) (<= iso-week 1))
                            (1+ year))
                           (t year)))
           (cn-date (calendar-chinese-from-absolute
                     (calendar-absolute-from-gregorian date)))
           (cn-year (cadr cn-date))
           (cn-month (cl-caddr cn-date))
           (cn-day (cl-cadddr cn-date))
           (cn-month-name
            ["正月" "二月" "三月" "四月" "五月" "六月"
             "七月" "八月" "九月" "十月" "冬月" "腊月"])
           (cn-day-name
            ["初一" "初二" "初三" "初四" "初五" "初六" "初七" "初八" "初九" "初十"
             "十一" "十二" "十三" "十四" "十五" "十六" "十七" "十八" "十九" "二十"
             "廿一" "廿二" "廿三" "廿四" "廿五" "廿六" "廿七" "廿八" "廿九" "三十"
             "卅一" "卅二" "卅三" "卅四" "卅五" "卅六" "卅七" "卅八" "卅九" "卅十"])
           (extra (format "(%s%s%s%s)"
                          (if (or (eq org-agenda-current-span 'day)
                                  (= day-of-week 1)
                                  (= cn-day 1))
                              (aref cn-month-name (1-  (floor cn-month)))
                            "")
                          (if (or (= day-of-week 1)
                                  (= cn-day 1))
                              (if (integerp cn-month) "" "[闰]")
                            "")
                          (aref cn-day-name (1- cn-day))
                          (if (or (= day-of-week 1)
                                  (eq org-agenda-current-span 'day))
                              (format ",第%02d周" iso-week)
                            ""))))
      (format "%04d-%02d-%02d %s %s"
              year month day dayname extra))))

好的,这段代码内容很丰富,我先学习和消化。

谢谢你!