EPOC时间转DateTime后提取时间并计算两时间差值问题
问题原因
- 类型转换错误:你调用
.ToString("HH:mm:ss")得到的是仅包含时间的字符串,如果变量前加了[datetime]强制类型约束,会自动将字符串转回DateTime对象,输出时默认补全日期信息,就会出现你看到的带完整日期的结果。 - Unix时间戳转换基准错误:Unix时间戳是从UTC时间1970-01-01 00:00:00开始计算的秒数,你直接用
Get-Date 01.01.1970得到的是本地时区的1970年1月1日零点,转换结果会有时区偏差。
修正实现
# 定义Unix时间戳UTC基准时间 $unixEpoch = [DateTime]::new(1970,1,1,0,0,0,[DateTimeKind]::Utc) # 转换时间戳为本地DateTime对象 $dtMin = $unixEpoch.AddSeconds($min.Minimum).ToLocalTime() $dtMax = $unixEpoch.AddSeconds($max.Maximum).ToLocalTime() # 提取仅时间的字符串(不要加[datetime]类型约束) $oUNIXDatemin_1 = $dtMin.ToString("HH:mm:ss") $oUNIXDatemax_1 = $dtMax.ToString("HH:mm:ss") # 计算时间差并格式化为HH:mm:ss $timeDifference = $dtMax - $dtMin $diffResult = $timeDifference.ToString("hh\:mm\:ss")
用你提供的两个时间戳计算,最终差值输出为13:29:18。
内容的提问来源于stack exchange,提问作者Empty Coder
相关产品推荐
相关产品推荐

