Windows命令提示符纪元时间与Electron应用不符,求问题原因
问题原因与解决方法
核心问题:时区基准不匹配
你通过PowerShell计算的时间戳,是基于本地时区的1970-01-01作为起始点;但标准Unix时间戳(包括Electron中Date.now()返回的数值)的基准是UTC时区的1970-01-01 00:00:00,两者的时区差异直接导致了结果偏差。
举个例子:如果你的本地时区是UTC+8,那么本地时间的1970-01-01 00:00:00对应UTC时间的1969-12-31 16:00:00,用这个早于标准基准的时间点计算时间差,得到的数值会比真实Unix时间戳多出8小时的秒数(28800秒),这和你给出的数值差异完全对应。
修正后的命令
要获取和Date.now()匹配的正确Unix时间戳,需要在PowerShell中指定起始时间为UTC时区的1970-01-01:
获取秒级时间戳(和原命令格式一致)
powershell -command "(New-TimeSpan -Start (Get-Date "01/01/1970" -Utc) -End (Get-Date)).TotalSeconds" & electron .
获取毫秒级时间戳(直接和Date.now()数值对齐)
powershell -command "(New-TimeSpan -Start (Get-Date "01/01/1970" -Utc) -End (Get-Date)).TotalMilliseconds" & electron .
验证说明
修正后,PowerShell计算的时间戳和Electron输出的Date.now()数值会基本一致,仅有的微小差异来自两个命令并行执行时的启动时间差。
内容的提问来源于stack exchange,提问作者window_handle
相关产品推荐
相关产品推荐

