時間API
各種OSやライブラリで独自実装が大量に存在する。独自実装を使うと当然依存性問題となる。
極力、標準的な関数を使うことを推奨する。(あるいは、ラッパーで隠蔽する。)
ここでは検索の手がかりとしての名前だけを提示する。
C言語(C++ でもAPIは継承)
table:cfunc
time_t 時間型(ほとんどの実装で精度が秒)
struct timeval 時間型(マイクロ秒) SVr4, 4.3BSD
struct timespec 時間型(ナノ秒) SUSv2, POSIX.1-2001, C11
time() time_t 型の現在時刻の取得 SVr4, 4.3BSD, C89, C99, POSIX.1-2001
clock_gettime() struct timespec 型の現在時刻の取得 SUSv2, POSIX.1-2001
clock_settime() struct timespec 型の現在時刻の設定 SUSv2, POSIX.1-2001
clock_getres() SUSv2, POSIX.1-2001
gettimeofday() struct timeval 型の現在時刻の取得 SVr4, 4.3BSD, POSIX.1-2001 (POSIX.1-2008で廃止予定と記載)
settimeofday() struct timeval 型の現在時刻の設定 SVr4, 4.3BSD
difftime() time_t の差を求める。double (秒)を返す。
localtime() time_t からローカル時刻の struct tm を求める。
localtime_s() time_t からローカル時刻の struct tm を求める。スレッドセーフ、境界チェック C11
localtime_r() time_t からローカル時刻の struct tm を求める。スレッドセーフ C2x
gmtime() time_t からUTC時刻の struct tm を求める。
mktime() ローカル時刻の struct tm から time_t を求める。
timegm() UTC時刻の struct tm から time_t を求める。 GNU
asctime() struct tm から文字列表現に変換。
ctime() time_t からローカル時刻の文字列表現に変換。
strftime() 書式文字列で出力する。
strptime() SUSv2, POSIX.1-2001
timegm は GNU 独自実装になっている。→ timegm JavaScript
Date
moment.js がよく使われるが、その他の実装方法との比較で代替手段を解説している。
以下が候補になる。
date-fns
Day.js
luxon
Java
Java 8 からはまともな Date and Time API が用意されている。
古くは Date と GregorianCalendar を使っていた。(現在は非推奨)
.NET
PostgreSQL