Windows FILETIMEタイムスタンプとは?

Windows FILETIMEタイムスタンプは、1601年1月1日 00:00:00 UTC から経過した100ナノ秒間隔の数を表す64ビット値です。このエポックは、より一般的に知られているUnixエポック(1970年1月1日)より正確に369年前に設定されています。Microsoftがこの起点を選んだ理由は、グレゴリオ暦における400年周期の始まりを示しており、うるう年の計算を簡略化できるためです。

FILETIME値は、NTFSファイルメタデータ、Active Directoryの属性(accountExpireslastLogonTimestamppwdLastSetなど)、Windowsレジストリエントリ、LDAPディレクトリクエリなど、Windowsシステム全体で使用されています。これらのタイムスタンプは人間が読める日付ではなく大きな整数として保存されているため、手動で変換するにはエポックのオフセットとティック間隔の両方を把握する必要があります。

ツールの説明

このツールは、Windows FILETIMEタイムスタンプを読みやすい日時形式に変換したり、その逆変換を行ったりします。FILETIME値を貼り付けると、対応する日付を複数の形式で即座に確認できます。また、日時を選択することで対応するFILETIME値を生成することも可能です。すべての変換はタイムゾーンに対応しており、検索可能なタイムゾーンセレクターを備えています。

Windows FILETIME 日付(UTC)
132812448000000000 2021-12-01 00:00:00
116444736000000000 1970-01-01 00:00:00(Unixエポック)
130000000000000000 2012-02-17 05:46:40
133600000000000000 2024-05-17 04:26:40

機能

  • Windows FILETIMEティックと人間が読める日付の双方向変換
  • 複数の出力形式:FILETIMEティック、Unixタイムスタンプ(秒)、ISO 8601、UTC、ローカル時刻、相対時刻
  • UTCオフセット表示付きの検索可能なタイムゾーンセレクターによる正確なローカル時刻変換
  • 現在時刻をWindowsタイムスタンプとして入力するワンクリックボタン
  • 選択した日付からFILETIMEへの逆変換に対応した日時ピッカー

仕組み

このコンバーターは、固定オフセットを適用してWindowsエポックとUnixエポック間の変換を行います。Windowsエポックは1601年1月1日から始まり、Unixエポックは1970年1月1日から始まります。この2つの日付の差は正確に11,644,473,600秒、または100ナノ秒ティック単位で116,444,736,000,000,000です。

FILETIME値を日付に変換する際、ツールはエポックオフセットを減算し、10,000で除算してUnixエポックからのミリ秒を求めます。逆方向の変換では、UnixミリセカンドにUnixミリ秒を10,000倍してオフセットを加算します。すべての演算はFILEIME値の完全な64ビット精度を保持するためBigIntを使用しています。

ユースケース

  • システム管理:アカウントの問題のトラブルシューティングやユーザーアクティビティの監査の際に、lastLogonTimestamppwdLastSetなどのActive Directory属性をデコードする
  • デジタルフォレンジクス:インシデント対応時にNTFSファイルのタイムスタンプを変換し、Windowsディスクイメージやイベントログからタイムラインを構築する
  • ソフトウェア開発:アプリケーション開発中にWindows API、レジストリエントリ、ファイルメタデータで使用されるFILETIME値のデバッグや検証を行う