如何在PowerShell中将Ticks值转换为DateTime类型?
问题分析与解决
问题原因
从注册表读取的REG_QWORD值虽被识别为ulong类型,但尝试转换为DateTime时,PowerShell因DateTime无直接接受ulong的转换构造函数,会将其隐式转为字符串,最终触发"无法识别为有效DateTime"的错误。
解决方法
需显式将ulong类型的ticks转换为long(System.Int64)类型后再进行DateTime转换,以下是几种可行方案:
方法1:调用DateTime构造函数
$dateTime = New-Object DateTime($ticks -as [long])
方法2:显式转换后强制类型转换
$dateTime = [DateTime]($ticks -as [long])
方法3:配合Get-Date参数使用
$dateTime = Get-Date -Date ($ticks -as [long])
转换结果验证
你的ticks值638254472943517809转换后对应本地时间为:2023年9月12日 14:28:14.3517809
补充说明
DateTime.Ticks的类型为Int64(即long),最大值为9223372036854775807,你的ticks值远小于该阈值,可安全转换为long类型。- 若后续遇到更大的
ulong值,需先确认其是否在DateTime支持的Ticks范围内(范围为0到3155378975999999999,对应0001年1月1日至9999年12月31日)。
内容的提问来源于stack exchange,提问作者aksarben
相关产品推荐
相关产品推荐

