首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定假期的函数

确定假期的函数
EN

Stack Overflow用户
提问于 2015-05-09 04:53:20
回答 1查看 207关注 0票数 3

它有任何功能,以确定当前的系统日期是假日或没有在电子邮件。

功能就像这样。

代码语言:javascript
复制
(is-holiday (current-time))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-09 05:40:20

答案要求用户设置预定义的节假日日历,如本例所示。我包括了5月9日的测试假期--如果用户希望在5月9日以外的任何一天测试此函数,用户可能希望将任意测试假日更改为执行测试的任何一天--在对该函数进行测试之后,可以删除测试条目。

有关如何格式化假日的示例,请参考库holidays.el中变量holidays.el的doc-string -例如,holiday-fixedholiday-floatholiday-sexp(lunar-phases)(solar-equinoxes-solstices)holiday-hebrewholiday-islamicholiday-bahaiholiday-julianholiday-chinese等等。

如何尝试这个示例?:阻止/复制/粘贴代码到*scratch*缓冲区;键入M-x eval-buffer RET;然后键入M-x is-holiday RET。这是一份充分发挥作用的工作草案。如果您决定在尝试之后不喜欢Emacs,只需重新启动Emacs,您就会回到尝试之前的状态。

测试是用最近公开发布的Emacs进行的: GNU Emacs 24.4.1 (x86_64-apple-darwin10.8.0,NS apple-appkit-1038.36),在builder10-6.porkrind.org上发布。

代码语言:javascript
复制
(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."))))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30136155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档