我能以RFC 3339格式获取当前日期吗?

时间:2013-01-25 09:48:19

标签: batch-file mercurial cmd

我正在编写一个批处理脚本(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 builtins还是使用hg命令?我不想依赖%DATE%,因为它依赖于语言环境。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用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...

希望有所帮助:)