3

変更セットの日付を RFC3339 形式で取得するバッチ スクリプト (cmd) を作成しています。

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 に答える