Last update: 2023-11-21

時間の計算をする   Emacs EmacsLisp

Emacs Lispで時間の計算をする方法。

時刻の取得

現在の時刻を取得するにはこれ。 list of integers で返ってくるらしいが、これが内部的にTimestamp型のように振る舞うのだろう。

(current-time)
(25941 29952 916172 0)

文字列で欲しい場合はこうする。引数がない場合はデフォルトで現在時刻が入る。

(current-time-string (current-time))
Thu Nov 16 10:52:40 2023

時間の計算

time-add を使うと時間の足し算ができる。

(let ((t1 (current-time))
      (aday (* 24 60 60)))
  (current-time-string
   (time-add t1 aday)))
Fri Nov 17 10:52:44 2023

利用例

今日から1週間分の日付の一覧を取得してみる

(let ((t1 (current-time))
      (aday (* 24 60 60)))
  (mapcar
   '(lambda (i)
      (format-time-string "%Y/%m/%d"
       (time-add t1 (* i aday))))
   '(1 2 3 4 5 6 7)))
2023/10/31 2023/11/01 2023/11/02 2023/11/03 2023/11/04 2023/11/05 2023/11/06