Unixタイムスタンプ詳細解説:フォーマット間の変換
Unixタイムスタンプは計算する中最も基本の概念の一つ,しかし多くの開発者とデータプロフェッショナル人士まだ正其感まで困惑。にかかわらずあなたはでデバッグ API 対応、分析するログファイルそれとも構築する调度系统,理解する Unixタイムスタンプの工作原理ならびにどのようにでフォーマットの間入行変換するすべては一项必备技できる。
Unixタイムスタンプとは?
Unixタイムスタンプ,もと呼ばれる epoch 時間または POSIX 時間,は自 1970 年 1 月 1 日 00:00:00 UTC もって来を経ての秒数(不を含むうるう秒)。この参照点と呼ばれる Unixエポック。タイムスタンプ保存するのために単个全体数,便于比較する、並べ替えると計算する時間差。
例えば,Unixタイムスタンプ 1700000000 正应 2023 年 11 月 14 日 22:13:20 UTC。する時間表示のために単个数値の简洁性させる Unixタイムスタンプになる操作する系统、データベースとプログラミング言語中時間表示の標準。
Unixタイムスタンプを使う理由
- 普遍的で曖昧さがない:タイムスタンプ常に使用 UTC,消を除いてタイムゾーンと夏させる时变化引き起こすの混淆。
- 比較が容易:比較する两个タイムスタンプは簡単の全体数比較する,するため確認するどのイベント先发生または計算する時間差变て軽そして易举。
- コンパクトな保存:単个 32 位または 64 位全体数占用の空间远少于フォーマットするの日付文字列。
- 言語非依存:毎種類プログラミング言語とデータベース系统すべてできる原生処理する Unixタイムスタンプ。
- 算術演算:加减時間すぐにのような正全体数值加减秒一样簡単。
一般的なタイムスタンプフォーマット
異なるの系统使用異なるのタイムスタンプフォーマット。理解するこれらの差异に役立つあなたでそれ们の間正確に変換する。
| フォーマット | 例 | 使用者 |
|---|---|---|
| Unix 秒 | 1700000000 | Linux、API、データベース |
| Unix ミリ秒 | 1700000000000 | JavaScript、Java |
| Unix マイクロ秒 | 1700000000000000 | Python、Go |
| ISO 8601 | 2023-11-14T22:13:20Z | REST API、JSON |
| RFC 2822 | Tue, 14 Nov 2023 22:13:20 +0000 | メールヘッダー、HTTP |
Unixタイムスタンプを可読な日付に変換
JavaScript で
JavaScript もってミリ秒表示タイムスタンプ。する必要があるする秒のために単位の Unixタイムスタンプ変換するのために JavaScript Date オブジェクト,先乘もって 1000。それから使用 toLocaleString() または toISOString() など方法フォーマットする出力する。
Python で
Python の datetime モジュール提供する fromtimestamp() 方法する Unixタイムスタンプ変換するのために datetime オブジェクト。Python まだを通じて datetime.fromtimestamp(ts, tz=timezone.utc) 方法支持するマイクロ秒精度のタイムスタンプ。
コマンドラインで
で Linux と macOS 上,date コマンドできる変換するタイムスタンプ。で Linux 上使用 date -d @1700000000 またはで macOS 上使用 date -r 1700000000 から Unixタイムスタンプ获取可読日付。
オンラインツールを使用
変換するタイムスタンプ最速の方法は使用オンラインコンバーター。貼り付けるあなたのタイムスタンプ,ツール即時表示する正应の日付と時間(多種類フォーマット)。無料のタイムスタンプコンバーター入行高速変換する。
日付をUnixタイムスタンプに変換
反へ変換する——する可読日付変換するのために Unixタイムスタンプ——同样重する必要がある。これでへ API 送信する日付、保存する用户選択するの日付または调度未来イベント时よく必要とする。
JavaScript で,作成する Date オブジェクトかつ调用 getTime() 获取ミリ秒级タイムスタンプ,それから除もって 1000 得る秒。Python で,使用 datetime.timestamp() 直接获取 Unixタイムスタンプ。大多数のプログラミング言語提供する類似しての内置方法。
2038年問題
使用 32 位あり符号全体数保存する Unixタイムスタンプの系统するで 2038 年 1 月 19 日 03:14:07 UTC 溢出。届时,タイムスタンプする达まで 2147483647,即 32 位あり符号全体数の最大值,それから翻转のために负数,をもたらす日付表示するのために 1901 年。
この问题と呼ばれる 2038年問題または Y2K38,影響する旧系统と嵌入式设备。解决方案は使用 64 位全体数保存するタイムスタンプ,これする可表示の範囲拡張機能まで约 2920 亿年。大多数の现代操作する系统、データベースとプログラミング言語已トランジションまで 64 位タイムスタンプ。
タイムゾーンの処理
Unixタイムスタンプ常に使用 UTC,消を除いてタイムゾーン歧义。しかし,へ用户表示するタイムスタンプ変換する必要がありますまで其本にタイムゾーン。もって下が鍵です注意する事项:
- データベースにUTCで保存タイムスタンプ,ユーザーに表示する時のみ変換のために本に時間
- IANAタイムゾーンデータベース識別子を使用(如 "America/New_York")そして非缩写(如 "EST"),もって正しく処理する夏させる时
- 常にAPIレスポンスにタイムゾーン情報を含める,最良使用带 UTC 偏移量の ISO 8601 フォーマット
- 一部の地域では夏時間を実施していないことに注意,かつ规すなわちよく变化
よくある落とし穴
- で JavaScript と其彼言語の間工作时秒とミリ秒の混同
- 表示するタイムスタンプ时タイムゾーンの考慮漏れ
- で接近 2038 年制限するの系统上32ビット整数での保存タイムスタンプ
- 不処理する 1970 年 1 月 1 日前に日付の负タイムスタンプ
- 夏時間の境界での日付計算运算时偽设すべての天すべてあり 86400 秒
必要とするで Unixタイムスタンプと可読日付の間変換する?無料のタイムスタンプコンバーター。
タイムスタンプコンバーターを試すよくある質問
とは Unixエポック?
Unixエポックは 1970 年 1 月 1 日 00:00:00 UTC。それとしてすべての Unixタイムスタンプ計算するの参照点。タイムスタンプ表示自该时刻もって来を経ての秒数。
Unixタイムスタンプできる用完か?
32 位あり符号全体数の Unixタイムスタンプするで 2038 年 1 月 19 日溢出,これと呼ばれる 2038年問題。使用 64 位全体数の系统で約 2920 亿年内できない面临此问题。大多数の现代系统已トランジションまで 64 位タイムスタンプ。
Unixタイムスタンプ受タイムゾーン影響するか?
できない,Unixタイムスタンプ常に使用 UTC,不受タイムゾーン影響する。同一タイムスタンプで全球代表同一时刻。タイムゾーン変換する仅でするタイムスタンプ表示するのために可読日付时发生。
タイムスタンプ中秒とミリ秒違いは何か?
標準 Unixタイムスタンプもって秒のために単位测量自纪元もって来の時間,そして JavaScript といくつかの API 使用ミリ秒。ミリ秒タイムスタンプは秒タイムスタンプの 1000 倍。例えば,1700000000 秒など于 1700000000000 ミリ秒。
うるう秒できる影響する Unixタイムスタンプか?
から技术上讲,Unixタイムスタンプ無視するうるう秒。毎一天すべてられると見なす恰良あり 86400 秒。これは以下を意味します時に挿入するうるう秒时,Unix 時間かもしれないできると UTC 略あり偏移,しかしで实践中これまれに引き起こす问题。