Windows CMD - 如何使用AM PM

时间:2018-02-12 15:57:01

标签: windows batch-file cmd

如何在Windows命令行(CMD)中创建使用以下格式的变量:

MON-DAY-YEAR_TIME-AM(或PM)

set mon=%DATE:~4,2%
set day=%DATE:~7,2%
set yr=%DATE:~10,4%

> echo %mon%-%day%-%yr%
02-12-2018    # Good so far now I need to add time

尝试将TIME / T(10:54 AM)的输出设置为变量,以便我可以将其与上面的日期一起使用。我怎样才能做到这一点?

> TIME /T
10:54 AM

不是我想要的:

>set mytime=TIME /T

>echo %mytime%
TIME /T

2 个答案:

答案 0 :(得分:1)

改为使用WMIC OS GET LOCALDATETIME

FOR /F "skip=1" %%A IN ('WMIC OS GET LOCALDATETIME') DO (SET "t=%%A" & GOTO break_1)
:break_1

SET "m=%t:~10,2%" & SET "h=%t:~8,2%" & SET "d=%t:~6,2%" & SET "z=%t:~4,2%" & SET "y=%t:~0,4%"
ECHO %z%-%d%-%y%_%h%:%m%

输出:02-12-2018_17:27

----------------------------------------------- -------------------------------------------------- -------

如果您因任何原因不喜欢24h格式,请使用:

SETLOCAL EnableDelayedExpansion

FOR /F "skip=1" %%A IN ('WMIC OS GET LOCALDATETIME') DO (SET "t=%%A" & GOTO break_1)
:break_1
SET "m=%t:~10,2%" & SET "h=%t:~8,2%" & SET "d=%t:~6,2%" & SET "z=%t:~4,2%" & SET "y=%t:~0,4%"
IF !h! GTR 11 (SET /A "h-=12" & SET "ap=P" & IF "!h!"=="0" (SET "h=00") ELSE (IF !h! LEQ 9 (SET "h=0!h!"))) ELSE (SET "ap=A")

ECHO %z%-%d%-%y%_%h%:%m%-%ap%M

输出:02-12-2018_05:27-PM

如果您不希望在个位数小时前增加0,请使用此功能:

FOR /F "skip=1" %%A IN ('WMIC OS GET LOCALDATETIME') DO (SET "t=%%A" & GOTO break_1)
:break_1
SET "m=%t:~10,2%" & SET "h=%t:~8,2%" & SET "d=%t:~6,2%" & SET "z=%t:~4,2%" & SET "y=%t:~0,4%"
IF "%h%"=="00" (SET "h=0") ELSE (IF %h% LEQ 9 SET "h=%h:0=%")
IF %h% GTR 11 (SET /A "h-=12" & SET "ap=P") ELSE (SET "ap=A")

ECHO %z%-%d%-%y%_%h%:%m%-%ap%M

输出:02-12-2018_5:27-PM

答案 1 :(得分:0)

另一种可靠且与语言环境无关的方法是使用PowerShell。

Route::get("url/{url}", function($url) {
    return $url;
})->where('url', '.*');