3

我正在编写一个批处理脚本 (cmd),在其中我以 RFC3339 格式获取变更集的日期:

FOR /F "usebackq delims=" %%G IN ^
  (`hg log -r . --cwd "%~dp0" --template "{date|rfc3339date}"`) ^
  do SET hg_changeset_date_rfc3339=%%G
echo %hg_changeset_date_rfc3339%       <------ writes "2009-08-18T13:00:13+02:00"

是否有一种简单且独立于语言环境的方法可以使用 cmd 内置命令或使用 hg 命令以相同格式获取当前日期?我不想依赖,%DATE%因为它依赖于语言环境。

谢谢。

4

1 回答 1

2

您可以使用wmic命令获取当前日期和时间,而不受区域设置的影响。

@echo off
SETLOCAL EnableDelayedExpansion


for /f "skip=1 tokens=1-6 delims= " %%a in ('wmic path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') do (
    IF NOT "%%~f"=="" (
        set /a FormattedDate=10000 * %%f + 100 * %%d + %%a
        set FormattedDate=!FormattedDate:~0,4!-!FormattedDate:~-4,2!-!FormattedDate:~-2,2!
        set /a FormattedTime=%%b * 10000 + %%c * 100 + %%e
        set FormattedTime=!FormattedTime:~0,2!:!FormattedTime:~-4,2!:!FormattedTime:~-2,2!
    )
)

echo !FormattedDate!T!FormattedTime!Z <--Assuming UTC timezone is used
PAUSE

这是执行脚本后的输出:

C:\>dateTime.bat
2013-01-25T22:11:40Z
Press any key to continue...

希望能帮助到你 :)

于 2013-01-25T14:19:52.743 回答