如何以 FILETIME 格式获取当前时间?

How to get current time in FILETIME format?

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

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

# 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()
)

注意:以上会产生一个 local [datetime] 实例(它的 .Kind 属性 是 Local)。附加 .ToUniversalTime() 以获得 UTC 实例(其中 .KindUtc)。

或者,使用[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()
)