1

如何在 Windows 上使用 PowerShell 以 Windows FILETIME格式获取当前时间?

除了 Windows,使用 Windows 格式(64 位值表示自 1601 年 1 月 1 日 UTC 以来的 100 纳秒间隔数),类似于这个关于 Linux 的答案FILETIME最好是像上述答案一样简单。

4

1 回答 1

3
# Returns a FILETIME timestamp representing the current UTC timestamp,
# i.e. a [long] value that is the number of 100-nanosecond intervals 
# since midnight 1 Jan 1601, UTC.
[datetime]::UtcNow.ToFileTime()

替代品:[dateime]::Now.ToFileTimeUtc()[datetimeoffset]::Now.ToFileTime()

要将这样的FILETIME值转换回[datetime]实例:

# Creates a [datetime] instance expressed as a *local* timestamp.
[datetime]::FromFileTime(
  [datetime]::UtcNow.ToFileTime()
)

注意:上面产生了一个本地 [datetime]实例(它的.Kind属性是Local)。追加.ToUniversalTime()以获取 UTC 实例(其中.Kindis Utc)。

或者,使用[datetime]::FromFileTimeUtc()(注意Utc后缀),它直接产生一个 UTC[datetime]实例:

# Creates a [datetime] instance expressed as a *UTC* timestamp.
[datetime]::FromFileTimeUtc(
  [datetime]::UtcNow.ToFileTime()
)

或者,用于[datetimeoffset]::FromFileTime()获取明确的时间戳,可以按原样使用,也可以根据需要转换为本地 ( .LocalDateTime) 或 UTC ( .UtcDateTime)[datetime]实例。

# A [datetimeoffset] instance unambiguously represents a point in time.
# Use its .LocalDataTime / .UtcDateTime properties to get
# local / UTC [datetime] instances.
[datetimeoffset]::FromFileTime(
  [datetime]::Now.ToFileTimeUtc()
)
于 2022-01-03T03:28:07.473 回答