【问题标题】:How to get current time in FILETIME format?如何以 FILETIME 格式获取当前时间?
【发布时间】:2022-01-03 03:15:43
【问题描述】:

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

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

【问题讨论】:

    标签: windows powershell filetime current-time


    【解决方案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()
    )
    

    注意:以上产生了一个本地 [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()
    )
    

    【讨论】:

    • 好点,@Tuor;我也将此信息添加到答案中。
    猜你喜欢
    • 2014-04-17
    • 2011-12-30
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 2014-08-10
    • 2015-07-04
    相关资源
    最近更新 更多