Zählen der Anzahl der Tage, die seit einem bestimmten Datum vergangen sind


8

Ich habe ein Dokument im Organisationsmodus, in dem ich die Anzahl der Tage verfolgen möchte, die seit einem bestimmten Datum vergangen sind. Gibt es dafür eine eingebaute Funktion oder muss ich eine benutzerdefinierte Elisp-Funktion schreiben, um dies zu erreichen?

Antworten:


7

Ich schreibe "<2016-06-15 Mi> - <2016-07-18 Mo>" ... und drücke dann (mit POINT irgendwo über den Daten) Cc Cy (org-evalu-time-range) C- ucy schreibt den Zeitraum nach den Daten wie <2016-06-15 Mi> - <2016-07-18 Mo> 33d


Das war genau das, was ich suchte. Vielen Dank! :-)
davorb

5

Das Originalposter möchte möglicherweise einen Blick auf die calendar-count-days-regionim Handbuch beschriebene integrierte Funktion werfen : https://www.gnu.org/software/emacs/manual/html_node/emacs/Counting-Days.html

Das Folgende ist eine benutzerdefinierte Funktion, die die Bibliotheken org-modeund verwendet calendar-mode. Bei meiner Prüfung von calendar-count-days-regionsah ich, dass der Autor (in die Zählung) den Tag am Ende der Region einbezog (dh durch programmgesteuertes Hinzufügen eines Tages). In meiner Arbeit, den letzten Tages als Teil der Gesamtzählung ist nicht erlaubt - so dass ich so etwas wie das folgende Beispiel verwenden würde statt (das ist nicht einen zusätzlichen Tag auf die Gesamtzahl hinzufügen).

(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)))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.