我试图在 Windows cmd 中将系统时间精确到毫秒。我知道可以使用以下方法获得厘秒精度:
echo %time%
我发现其他问题提出了完全相同的问题,但没有答案可以完全回答该问题。这是我迄今为止发现的:
这个解决方案仅适用于厘秒精度(与我上面描述的相同): 在批处理文件中打印时间(毫秒)
该方案提供了定时器方案,但没有提供打印当前时间戳的方案: 以毫秒为单位打印批处理时间
任何帮助将不胜感激。
正如 Neil 指出的那样,cmd 中没有原生解决方案。对于任何可以选择使用 PowerShell 的人,您可以使用以下命令:
(Get-Date -UFormat "%Y-%m-%d %H:%M:%S").toString() + "." + ((Get-Date).millisecond)
可能有一种更简洁的方法,但这对我的目的有用。
由于问题被标记为
cmd
,从 cmd 调用此问题的适当命令行是:
powershell -command "(Get-Date -UFormat '%Y-%m-%d %H:%M:%S').toString() + '.' + ((Get-Date).millisecond)"
可能对你来说是可行的
如果您有管理员权限,
如果您在 WINDOWS 系统上运行
如果您有一台联网机器配置为时间从机(到另一台机器),
如果只想测量时间增量,
您可以查询Windows“W32tm”实用程序。
它为您提供自上次以来的微秒数 时间同步,通过通话
C:\> w32tm /query /status /verbose
(打印出很多东西)
然后仅拔出具有上次同步时间的行
C:\> w32tm /query /status /verbose | FIND "Time since"
Time since Last Good Sync Time: 15554.1918553s
然后,从 BAT 文件中执行以下操作:
for /F "tokens=7 delims= " %%a in ('w32tm /query /status /verbose ^| find "Time since" ') do set BEFORE_TIME=%%a
(您要测量的内容在这里)
for /F "tokens=7 delims= " %%a in ('w32tm /query /status /verbose ^| find "Time since" ') do set AFTER_TIME=%%a
如果你想自动减法,需要做更多的工作,但这是可以完成的
单行获取当前 Unix 纪元时间(以毫秒为单位)(在 PowerShell 7.4.6 中测试):
[DateTimeOffset]::UtcNow.ToUnixTimeMilliseconds()