Contando el número de días que han pasado desde una fecha determinada

8

Tengo un documento en modo org en el que deseo realizar un seguimiento de la cantidad de días que han pasado desde una fecha determinada. ¿Hay una función incorporada para esto, o me veré obligado a escribir una función elisp personalizada para lograr esto?

davorb
fuente

Respuestas:

7

Escribo "<2016-06-15 Wed> - <2016-07-18 Mon>" ... y luego (con POINT en algún lugar sobre las fechas) presiono Cc Cy (org-Evaluation-Time-Range) C- ucy escribirá el rango de tiempo después de las fechas como, <2016-06-15 Wed> - <2016-07-18 Mon> 33d

vcmsxs
fuente
Esto era exactamente lo que estaba buscando. ¡Gracias! :-)
davorb
5

El póster original puede desear echar un vistazo a la función incorporada llamada calendar-count-days-regiondescrita en el manual: https://www.gnu.org/software/emacs/manual/html_node/emacs/Counting-Days.html

La siguiente es una función personalizada que utiliza las bibliotecas org-modey calendar-mode. Al examinar calendar-count-days-region, vi que el autor incluía (en el recuento) el día al final de la región (es decir, mediante la adición programática de un día). En mi línea de trabajo, no se permite contar el último día como parte del total, por lo que usaría algo como el siguiente ejemplo (que no agrega un día adicional al recuento total).

(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)))
lista de leyes
fuente