日付
開始日 | 年 | 月 | 日 | 時 | 分 | . | 秒 | |
---|---|---|---|---|---|---|---|---|
終了日 | 年 | 月 | 日 | 時 | 分 | . | 秒 |
日数・経過時間
週数 | 週 | 日 | ||
---|---|---|---|---|
日数 | 日 | |||
時分秒 | 時 | 分 | . | 秒 |
分秒 | 分 | . | 秒 | |
ミリ秒 |
UNIX時間
開始日 | (ms) |
---|---|
終了日 | (ms) |
タイムゾーン | 時 |
終了日設定
日数・時間計算の使い方
特定の日付から日付の日数を計算(終了日 - 開始日)
- 開始日と終了日を入力
- 日数・経過時間に「終了日 - 開始日」の計算結果が表示される
開始日は含めず「日付を跨いだら1日」で計算します(「24時間経過したら1日」ではありません)。
特定の日付から何日後かの日付を計算(開始日 + 日数・経過時間)
- 開始日と日数・経過時間を入力
- 終了日に「開始日 + 日数・経過時間」の計算結果が表示される
UNIX時間との相互変換
- 開始日、終了日を入力すると自動でUNIX時間に変換します
- UNIX時間を入力すると自動で開始日、終了日に変換します
UNIX時間(POSIX時間)について
UNIX時間はコンピューターの内部で使う時間表現です。本来は秒単位の時間表現ですが、ミリ秒単位で扱うプログラミング言語も多いです。
協定世界時 (UTC) の1970年1月1日午前0時0分0秒(UNIXエポック)をゼロ秒として、そこからの経過秒数で日時を表します。日時を表すものなので閏秒調整を施しており、GPS時刻のように本当の経過秒数を表すものではありません。ちなみにこの起点時刻はUNIXが実装された時にキリがよかったというだけで、それ以上の意味はないらしいです。
2038年問題
2038年1月19日3時14分7秒(UTC)を過ぎると一部のコンピューターが誤作動する可能性がある問題です。
この日付はUNIXエポックから2147483647秒後であり、これは32ビット符号付き整数(int型)の最大値です。そのためUNIX時間をint型で扱っている場合、2038年にオーバーフローを起こして誤作動する可能性が懸念されています。
対策は64ビット符号付き整数(long型)を使用するのが一般的で、おおよそ西暦3000億年まで使えるようになります。そのころには地球もなくなっていますし、時間を計る生き物がいたとしても計り方が変わっているでしょうからまず問題ないです。
何らかの都合で64ビット符号付き整数を使えない場合は、次善の策として32ビット符号なし整数(unsigned int型)を使う手があります。これだと2106年2月7日6時28分15秒まで使えます。人類は滅亡しているかもしれませんが地球は健在と思われるので、できればlong型にしたいですね。