我想使用命令提示符获取当前系统日期和时间。
如何获取特定格式的日期MM-DD-YYYY HH:MIN AM/PM
?
答案1
实际上获取日期和时间非常容易:
set Year=
for /f "skip=2" %%x in ('wmic Path Win32_LocalTime get Year^,Month^,Day^,Hour^,Minute^,Second /Format:List') do (
if not defined Year set %%x
)
我这里假设的是当地时间。如果你需要 UTC,请相应调整。
您的格式让事情变得更加复杂。如果我在这里犯了错误,请原谅,因为我不熟悉 am/pm 格式。
if %Hour% LSS 12 (
set ampm=AM
if %Hour%==0 set Hour=12
) else (
set ampm=PM
set /a Hour-=12
)
我们需要几个前导零:
if %Month% LSS 10 set Month=0%Month%
if %Day% LSS 10 set Day=0%Day%
if %Minute% LSS 10 set Minute=0%Minute%
if %Hour% LSS 10 set Hour=0%Hour%
接下来是组装零件的时间了:
set Timestamp=%Month%-%Day%-%Year% %Hour%:%Minute% %ampm%
(只是一个随机注释:你到底为什么要使用那个时间戳格式?)
答案2
Unix 命令行工具通常比 Windows 命令行工具更强大。
但即使使用 Windows,您也可以使用一些移植的命令行工具。例如免费的 UnxTools 包:
http://sourceforge.net/projects/unxutils/
下载链接如下:
http://sourceforge.net/projects/unxutils/files/unxutils/current/UnxUtils.zip/download
只需从存档中取出 date.exe(位于子文件夹 usr\local\wbin 中)并将其放入 PATH 环境中的文件夹中。
然后您可以使用如下参数调用 date.exe:
date.exe +"%m-%d-%y %l:%M %p"
如果你想查看所有可能的格式模式,只需调用
date.exe --help
请注意包含“.exe”扩展名。如果您不添加它,Windows 将调用内部日期命令。
答案3
:: construct date and time strings
:: "MM-DD-YYYY HH:MIN AM/PM"
for /f "tokens=1,2" %%u in ('date /t') do set d=%%v
for /f "tokens=1" %%u in ('time /t') do set t=%%u
for /f "tokens=2" %%u in ('time /t') do set a=%%u
if "%t:~1,1%"==":" set t=0%t%
set datestr=%d:~0,2%-%d:~3,2%-%d:~6,4% %t:~0,2%:%t:~3,2% %a%
我在编写的几乎每个 .bat 文件中都使用了此代码块的变体。
使用“%datestr%”获取日期字符串,即:
回显 %datestr%
答案4
请参阅 Stack Overflow 问题如何获取通用 Windows 批处理文件时间戳有关如何获取独立于区域设置的日期时间设置的示例。要调用该脚本,
c:\> cscript //nologo myscript.vbs
如果需要,使用for
循环来捕获输出。