3

Windows PowerShellスクリプトを使用して、今日の日付の1601-01-01からのミリ秒数を計算するにはどうすればよいですか? これは、正しい LDAP クエリを作成するために必要です。

4

3 に答える 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 に答える