Gor*_*don 1 registry powershell datetime
我在Uninstalls注册表项中有一个程序,奇怪的日期/时间.报告的值为"1533407816",但实际日期很可能是"20180804",这是当天安装的所有其他Autodesk产品的报告.我正在使用[datetime]::ParseExact($program.GetValue('InstallDate'),'yyyyMMdd',$null)将这些日期转换为正确的DateTime,但不确定我需要什么机制来进行奇怪的日期.或者,如果它甚至是有意义的数据.
该值可能是Unix时间戳,这是自1970年1月1日午夜(UTC)以来经过的秒数.
您可以[datetime]在本地时间将此值转换为实例,如下所示:
[DateTimeOffset]::FromUnixTimeSeconds(1533407816).LocalDateTime
Run Code Online (Sandbox Code Playgroud)
要获取UTC [datetime]实例,请使用.UtcDateTime.
或者,直接使用[System.DateTimeOffset]返回的实例[DateTimeOffset]::FromUnixTimeSeconds().
注意:
Unix时间戳是以秒为单位的 32位整数([int]).
顺便说一句,这意味着他们可以代表的最新日期是一年,这个限制被称为2038年问题.2038
相比之下,[datetime]实例具有100纳秒的分辨率,称为刻度,存储在.Ticks属性中,其类型为[long]([System.Int64]带符号的64位整数).要手动将秒转换为刻度,请将它们与10000000L(1e7L)相乘.
简单的辅助功能:
function convertFrom-UnixTime {
param([int] $Value)
[DateTimeOffset]::FromUnixTimeSeconds($Value).LocalDateTime
}
Run Code Online (Sandbox Code Playgroud)
在行动中,在东部时区,使用en-US文化:
PS> convertFrom-UnixTime 1533407816
Saturday, August 4, 2018 2:36:56 PM
Run Code Online (Sandbox Code Playgroud)
以协调世界时(UTC)(en-US文化)表示:
PS> (convertFrom-UnixTime 1533407816).ToUniversalTime()
Saturday, August 4, 2018 6:36:56 PM
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |