回答:
元の投稿者はcalendar-count-days-region
、マニュアルで説明されている組み込み関数を確認したいと思うかもしれません:https : //www.gnu.org/software/emacs/manual/html_node/emacs/Counting-Days.html
以下は、org-mode
およびcalendar-mode
ライブラリを使用するカスタム関数です。を調べcalendar-count-days-region
たところ、作者がリージョンの最後の日を(カウントに)含めている(つまり、プログラムで1日を追加する)ことがわかりました。私の仕事では、最終日を合計の一部としてカウントすることは許可されていません。そのため、代わりに次の例のようなものを使用します(合計カウントに1日を追加しません)。
(require 'calendar)
(require 'org)
(defun count-calendar-days ()
"Count the number of calendar days -- includes holidays, weekends, etc."
(interactive)
(let* (
(d1 (org-read-date nil nil nil "Insert First Date: "))
(d1-parsed (org-parse-time-string d1))
(d1-day (nth 3 d1-parsed))
(d1-month (nth 4 d1-parsed))
(d1-year (nth 5 d1-parsed))
(d1-list (list d1-month d1-day d1-year))
(d2 (org-read-date nil nil nil "Insert Second Date: "))
(d2-parsed (org-parse-time-string d2))
(d2-day (nth 3 d2-parsed))
(d2-month (nth 4 d2-parsed))
(d2-year (nth 5 d2-parsed))
(d2-list (list d2-month d2-day d2-year))
(date1 (calendar-absolute-from-gregorian d1-list))
(date2 (calendar-absolute-from-gregorian d2-list))
(total-days
(let* ((days (- (calendar-absolute-from-gregorian d1-list)
(calendar-absolute-from-gregorian d2-list)))
(days (if (> days 0) days (- days))))
days)) )
(message "%s (+/-) %s = %s" d1 d2 total-days)))