+emacs+添加农历纪念日
纪念日可以显示在 org-agenda
中。要添加公历的纪念日,可以在 org-agenda-files
的某一文件中新建一行,输入以下代码(这里开启iso日期表示法)
;;开启iso日期表示法 年 月 日 (setq calendar-date-style 'iso) %%(diary-anniversary 1949 10 1) 新中国第 %d 个公历生日
到了10月1日,就会在 org-agenda
中当天日程最下方显示为:
新中国第 75 个公历生日
添加农历纪念日需要用到另一个函数 diary-chinese-anniversary
,但这个函数接受的第三个可选参数 year
是黄帝纪年的第几次循环的第几个项拼接起来的,不能直接填入公元年份。
以农历1949年八月初十(1949年10月1日)为例,这里开启iso日期表示法:
;;开启iso日期表示法 年 月 日 (setq calendar-date-style 'iso) ;;启用内置cal-china包 (use-package cal-china :load-path "~/elpa/") ;;cal-china的diary-chinese-anniversary函数仅支持american日期格式,需要let局部定义变量 (defun my/diary-chinese-anniversary (year month day) (let ((calendar-date-style 'american)) (diary-chinese-anniversary month day year nil) )) ;;计算给定公历日期的农历年份 (defun my/chinese-year (year month day) (+ (* 100 (car (calendar-chinese-from-absolute (calendar-absolute-from-gregorian (diary-make-date year month day))))) (cadr (calendar-chinese-from-absolute (calendar-absolute-from-gregorian (diary-make-date year month day)))) ))
这样就可以通过下面这行代码来显示农历1949年八月初十(1949年10月1日)人的农历生日提醒了。
%%(my/diary-chinese-anniversary (my/chinese-year 1949 10 1) 8 10) 新中国第 %d 个农历生日