3
A
回答
2
答案要求用户设置一个预定义假期的日历,就像这个例子。我已经包含了5月9日的测试假期 - 如果用户希望在除5月9日以外的任何一天测试此功能,用户可能希望将任意测试假期更改为测试执行的任何一天 - 在功能测试完成后,测试条目可以被删除。
有关如何格式化假期的示例,请参阅库holidays.el
中变量calendar-holidays
的文档字符串 - 例如holiday-fixed
; holiday-float
; holiday-sexp
; (lunar-phases)
; (solar-equinoxes-solstices)
; holiday-hebrew
; holiday-islamic
; holiday-bahai
; holiday-julian
; holiday-chinese
;等等
你怎么可以试用这个例子?:将代码块/复制/粘贴到您的*scratch*
缓冲区;并输入M-x eval-buffer RET
;然后键入M-x is-holiday RET
。这是一个功能齐全的工作草案。如果您在尝试之后决定不喜欢它,只需重新启动Emacs,在尝试之前您会回到您的位置。
已执行的测试是在Emacs的最新公开版本中完成的:2014-10-20在构建器10上的GNU Emacs 24.4.1(x86_64-apple-darwin10.8.0,NSapple-appkit-1038.36) -6.porkrind.org。
(require 'holidays)
(defcustom my-custom-holiday-list (mapcar 'purecopy '(
(holiday-fixed 1 1 "New Year's Day")
(holiday-float 1 1 3 "Martin Luther King Day")
(holiday-float 2 1 3 "President's Day")
(holiday-float 5 1 -1 "Memorial Day")
;; ARBITRARY TEST HOLIDAY -- MAY 9
(holiday-fixed 5 9 "Arbitrary Test Holiday -- May 9")
(holiday-fixed 7 4 "Independence Day")
(holiday-float 9 1 1 "Labor Day")
(holiday-float 10 1 2 "Columbus Day")
(holiday-fixed 11 11 "Veteran's Day")
(holiday-float 11 4 4 "Thanksgiving")
(holiday-fixed 12 25 "Christmas")
(solar-equinoxes-solstices)
(holiday-sexp calendar-daylight-savings-starts
(format "Daylight Saving Time Begins %s"
(solar-time-string
(/ calendar-daylight-savings-starts-time (float 60))
calendar-standard-time-zone-name)))
(holiday-sexp calendar-daylight-savings-ends
(format "Daylight Saving Time Ends %s"
(solar-time-string
(/ calendar-daylight-savings-ends-time (float 60))
calendar-daylight-time-zone-name)))))
"Custom holidays defined by the user."
:type 'sexp
:group 'holidays)
(defun is-holiday()
"Is today a holiday?"
(interactive)
(let* (
(d1 (time-to-days (current-time)))
(date (calendar-gregorian-from-absolute d1))
ee
res-holidays
(displayed-month (nth 0 date))
(displayed-year (nth 2 date))
(holiday-list
(dolist (p my-custom-holiday-list res-holidays)
(let* (h)
(when (setq h (eval p))
(setq res-holidays (append h res-holidays)))))))
(mapcar
(lambda (x)
(let ((txt (format "%s -- %s" (car x) (car (cdr x)))))
(when (eq d1 (calendar-absolute-from-gregorian (car x)))
(push txt ee))))
holiday-list)
(if ee
(message "The following holiday(s) is/are today: %s" (nreverse ee))
(message "Today is not a holiday."))))
相关问题
- 1. 评估Emacs中的随机elisp函数
- 2. 如何在elisp中定义以“块”作为参数的函数?
- 3. 确定真/假
- 4. Elisp函数返回标记而不是正确的值
- 5. Elisp函数返回值
- 6. 函数的一次性假定
- 7. elisp新手问题:在org.el中找不到'filename'函数定义?
- 8. 用Excel函数确定一个月中的上个星期五
- 9. 如何动态确定某个国家的假期?
- 10. 星期数的确定
- 11. 是否有列出给定缓冲区中的标记的Elisp函数?
- 12. 假期或假期日历
- 13. 如何在假期或假期中使用“mime”秒数
- 14. Oracle中的Dertermine假期
- 15. Matlab中的德国假期
- 16. 哈希函数的确定
- 17. 无星期六,星期日和节假日返回交货日期的函数
- 18. 函数获得两个日期之间的平日数除外假期
- 19. python中函数的准确定时
- 20. 如何异步运行elisp函数?
- 21. 这个elisp函数有什么问题?
- 22. 特定日期的假系统时钟
- 23. 为什么elisp函数不起作用(就像我期望的那样)?
- 24. 新手:Elisp中的键绑定错误
- 25. Elisp函数在当前行中替换下划线的空格
- 26. emacs中的bignum/elisp
- 27. 计算假期:Oracle中给定日期范围查询中的星期六和星期日的数量
- 28. 在sql中给定日期范围内找到假期的数量
- 29. 确定性标量函数获取日期的一周
- 30. elisp - 围绕明确定义的文本块移动