最终问题是由于
AddSeconds
以当地时间为基础
DateTime
.
The .net docs
时区之间的转换操作(例如,在UTC和本地时间之间,或在一个时区和另一个时区之间)将夏令时考虑在内,
但是算术和比较运算不能
我不是一个重能量地狱专家,但看起来
[datetime] 'somestring'
相当于打电话
DateTime.Parse("somestring")
Z
,输入将被视为UTC,然后将值转换为本地时间。这就是产生差异的原因。
在C#(与
)可以传递参数来控制解析和输出行为:
DateTime.Parse("1970-01-01Z", CultureInfo.InvariantCulture, DateTimeStyles.RoundTripKind)
这个
RoundTripKind
style说(部分地)输出类型应该由输入字符串中的信息决定。自从
Z轴
日期时间
在输出中。
我不知道如何将这些参数传递到速记(类型加速器?)在powershell中,但是长手是这样的:
[datetime]::Parse('1970-01-01Z', [System.Globalization.CultureInfo]::InvariantCulture, [System.Globalization.DateTimeStyles]::RoundtripKind)
DateTimeOffset.FromUnixTimeSeconds(unixTime)
你可以得到一个
日期时间
DateTimeOffset.UtcDateTime
保留UTC类型
DateTimeOffset.DateTime
总是有未指明的种类,然而
DateTimeOffset.LocalDateTime
返回本地类型)。
[datetimeoffset]::FromUnixTimeSeconds($unixTime).UtcDateTime