Ink

Contents related to tech, hobby, etc

時間関連のElisp関数

|

時間関連のElisp関数

時間に関連するElisp関数達

ビルトイン関数群 ( src/timefns.c )

エポック秒 (1970年1月1日0時0分0秒からの経過時間) で時間を 扱います。 基本的には format-time-string を用いて変換することになります。

format-time-string

help:format-time-string 指定したフォーマットで時間を文字列にしてくれる関数。

current-time

help:current-time 現在の時間を返します

time-add

help:time-add

時間を加算してくれます。負数を足せば減算できます。 足す値のフォーマットは current-time で使われているものと同じで ちょっと分かりづらいですが、 org-roam-dailes.elで使われている箇所を参考にすると、 1日足し引きするには 86400 を足し引きすればよさそうです。

n日足すには:

     (defun nth-day (n)
"Return nth day from today"
(time-add (* n 86400) nil))

calendar

曜日等を扱うことができます。

calendar-nth-named-day

help:calendar-nth-named-day

「特定の日付の前後の特定の曜日」を返すことができます。 曜日は数値で指定され、 0が日曜日、1が月曜日...となっていきます (参考: help:calendar-week-start-day)

例えば、今日2022年1月26日の次の日曜日を取得するには

(calendar-nth-named-day 1 0 1 2022 26)

(1 30 2022)

となります