如何获取FILETIME格式的当前时间



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

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

# 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实例(其中.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()
)

最新更新