Đếm số ngày đã trôi qua kể từ một ngày nhất định


8

Tôi có một tài liệu chế độ org trong đó tôi muốn theo dõi số ngày đã trôi qua kể từ một ngày nhất định. Có một chức năng tích hợp cho việc này không, hoặc tôi sẽ bị buộc phải viết một chức năng elisp tùy chỉnh để thực hiện điều này?

Câu trả lời:


7

Tôi viết "<2016-06-15 Thứ Tư> - <2016-07-18 Thứ Hai>" ... và sau đó (với ĐIỂM ở đâu đó qua các ngày) Tôi nhấn Cc Cy (org-Assessment-time-Range) C- ucy sẽ viết khoảng thời gian sau những ngày như, <2016-06-15 Thứ Tư> - <2016-07-18 Thứ Hai> 33ngày


Đây chính xác là những gì tôi đang tìm kiếm. Cảm ơn! :-)
davorb

5

Người đăng ban đầu có thể muốn xem chức năng tích hợp được gọi được calendar-count-days-regionmô tả trong hướng dẫn sử dụng: https://www.gnu.org/software/emacs/manual/html_node/emacs/Counting-Days.html

Sau đây là một chức năng tùy chỉnh sử dụng các thư viện org-modecalendar-mode. Khi kiểm tra calendar-count-days-region, tôi thấy rằng tác giả đã bao gồm (trong số) vào ngày ở cuối khu vực (tức là, bằng cách lập trình thêm một ngày). Trong công việc của tôi, việc tính ngày cuối cùng là một phần của tổng số không được phép - vì vậy tôi sẽ sử dụng một cái gì đó giống như ví dụ sau ( không thêm một ngày vào tổng số).

(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)))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.