在Windows cmd中获取精确到毫秒的系统时间

问题描述 投票:0回答:3

我试图在 Windows cmd 中将系统时间精确到毫秒。我知道可以使用以下方法获得厘秒精度:

echo %time%

我发现其他问题提出了完全相同的问题,但没有答案可以完全回答该问题。这是我迄今为止发现的:

这个解决方案仅适用于厘秒精度(与我上面描述的相同): 在批处理文件中打印时间(毫秒)

该方案提供了定时器方案,但没有提供打印当前时间戳的方案: 以毫秒为单位打印批处理时间

任何帮助将不胜感激。

windows cmd timestamp milliseconds
3个回答
2
投票

正如 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)"

0
投票

可能对你来说是可行的

如果您有管理员权限,
如果您在 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

如果你想自动减法,需要做更多的工作,但这是可以完成的


0
投票

单行获取当前 Unix 纪元时间(以毫秒为单位)(在 PowerShell 7.4.6 中测试):

[DateTimeOffset]::UtcNow.ToUnixTimeMilliseconds()
© www.soinside.com 2019 - 2024. All rights reserved.