特定の日付から経過した日数を数える


8

特定の日付から経過した日数を追跡したい組織モードのドキュメントがあります。このための組み込み関数はありますか、またはこれを達成するためにカスタムelisp関数を作成することを強制されますか?

回答:


7

「<2016-06-15 Wed>-<2016-07-18 Mon>」と書いた後、(日付のどこかにPOINTを付けて)Cc Cy(org-evaluate-time-range)C-を押しますucyは、<2016-06-15 Wed>-<2016-07-18 Mon> 33dのような日付の後に時間範囲を書き込みます


これはまさに私が探していたものでした。ありがとう!:-)
davorb 2016年

5

元の投稿者は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)))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.