Windows time

Windows time

[15] Windows では NTFS などで整数時刻系が使われています。

[1] システム時刻 - Wikipedia () https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E6%99%82%E5%88%BB

Microsoft Windows NTでは1601年1月1日0時0分(UTC)(先発グレゴリオ暦)からの100ナノ秒ティック単位での経過時間が主に用いられる。ただし後者は、現在時刻を最も近いミリ秒の値に近似している。

[2] 電子機器の時刻 () http://www.ffortune.net/calen/calen/etime.htm

NTFSではファイルの時刻を1601年1月1日起点の64bitの経過時間で持っています。時間の単位は0.1μ秒です。1601年1月1日0時0分0秒の2**64=1844674407370.9551616秒後は60056年5月28日5時36分10.9551616秒になります。

[3] 真珠猫Blog: Windows時間をローカル時間に変換 () http://pearllynx.blogspot.jp/2013/03/windows.html

ActiveDirectryの情報をPerlで取得したりすると、最終ログイン日時やパスワード変更日時が上記の秒数になって表示されているので、変換する必要があります。

[4] 日付時刻に関する処理 () http://home.a00.itscom.net/hatada/c-tips/datetime.html

FILETIME構造体は次のように定義された 1601 年 1 月 1 日午前 12 時からの 100 ナノ秒間隔の数 (UTC)を表す64ビット整数である。

[5] 厄介なActiveDirectoryの日付 « もみんぎゅぅ () http://cmf.ohtanz.com/blog/archives/25

Windows 2003 ServerのActiveDirectory(Windowsすべての日付がそうなのかは不明ですが)上の日付というのは1601年1月1日から100ナノ秒(10000000分の1秒?)間隔というワケのワカラン仕様なのです

[6] DateTime.ToFileTime Method (System) () https://msdn.microsoft.com/en-us/library/system.datetime.tofiletime(v=vs.110).aspx

A Windows file time is a 64-bit value that represents the number of 100-nanosecond intervals that have elapsed since 12:00 midnight, January 1, 1601 A.D. (C.E.) Coordinated Universal Time (UTC). Windows uses a file time to record when an application creates, accesses, or writes to a file.

[7] Why is the Win32 epoch January 1, 1601? – The Old New Thing () https://blogs.msdn.microsoft.com/oldnewthing/20090306-00/?p=18913

[8] date - What is the significance of January 1, 1601? - Stack Overflow () http://stackoverflow.com/questions/10849717/what-is-the-significance-of-january-1-1601

[9] FILETIME structure (Windows) () https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms724284.aspx

Contains a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 (UTC).

[10] Active Directory: LastLogonTimeStamp Conversion - TechNet Articles - United States (English) - TechNet Wiki ( ()) https://social.technet.microsoft.com/wiki/contents/articles/12814.active-directory-lastlogontimestamp-conversion.aspx

Active Directory stores date/time values as the number of 100-nanosecond intervals that have elapsed since the 0 hour on January 1, 1601 until the date/time that is being stored. The time is always stored in UTC (Coordinated Universal Time, which used to be called Greenwich Mean Time, or GMT) in the Active Directory.

[11] Mail::Exchange::Time - search.cpan.org () http://search.cpan.org/dist/Mail-Exchange/lib/Mail/Exchange/Time.pm

A Mail::Exchange::Time object allows you to convert between unix time and the time used internally in by Microsoft, which is defined as number of 100-nsec-intervals since Jan 01, 1901.

[12] SMB::Time - search.cpan.org () http://search.cpan.org/dist/SMB/lib/SMB/Time.pm

NT time is number of 100-nanoseconds since 1601-01-01 00:00:00 UTC.

[13] NTタイムエポック値 について () https://forest2forest.blogspot.jp/2016/02/nt.html

【LastLogonTimeStamp】属性にはNTタイムエポック値という値で記録される。

NTタイムエポック値とは、1601/01/01 00:00:00 から100ナノ秒単位のカウント値である。

[17] Interpretation of NTFS Timestamps - Forensic Focus, Forensic Focus, https://www.forensicfocus.com/articles/interpretation-of-ntfs-timestamps/

[16] Time formatting and storage bugs - Wikipedia, , https://en.wikipedia.org/wiki/Time_formatting_and_storage_bugs#Year_30,828

Beginning 14 September 30,828, Windows will not accept dates beyond this day and on startup, it will display an error regarding "invalid system time" in NTFS. This is because the FILETIME value in Windows, which is a 64-bit value corresponding to the number of 100-nanosecond intervals since 1 January 1601, 00:00:00.0000000 UTC, will overflow its maximum possible value on that day at 02:48:05.4775808 UTC.


[14] DOSの日時形式はまた別のものでした。

[22] COBOL整数日付元期が同じように見えて違うので注意。