Windows PowerShellスクリプトを使用して、今日の日付の1601-01-01からのミリ秒数を計算するにはどうすればよいですか? これは、正しい LDAP クエリを作成するために必要です。
質問する
3310 次
3 に答える
7
DateTime
構造体にはメソッドが含まれていますToFileTime
。ドキュメントに従って、
Windows ファイル時刻は、西暦 1601 年 1 月 1 日午前 0 時 (CE) 協定世界時 (UTC) から経過した 100 ナノ秒間隔の数を表す 64 ビット値です。
したがって、ns (10e-9) から ms (10e-3) への移行は単純な算術演算です。カウンターは 1 ns ブロックではなく、100 ns ブロックをカウントすることに注意してください。値は Int64 として格納されるため、型変換は必要ありません。そのようです、
PS C:\> (Get-Date).ToFileTime()
130142949169114886
PS C:\> (Get-Date).ToFileTime().GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Int64 System.ValueType
于 2013-05-29T09:59:07.650 に答える
1
@vonPryzの回答に完全に同意します。tick
余談ですが、Powershell のプロパティで100 ナノ秒の数値を見つけることができますSystem.DateTime
。しかし、このティックは "01/01/1600" からではなく、([datetime]::MinValue) "01/01/0001" からのものです。
試す :
$a = ([datetime]::Now).Ticks - ([datetime]("01/01/1600 12:00")).Ticks
[datetime]::FromFileTimeUtc($a)
于 2013-05-29T10:34:30.657 に答える