2013-01-25 146 views
2

我寫一個批處理腳本(CMD)中,我得到了變更的RFC3339格式的日期:我可以使用RFC 3339格式獲取當前日期嗎?

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%,因爲它依賴於語言環境。

謝謝。

+0

你能/允許運行PowerShell的? –

+0

@Kayasax:應該沒問題,但這是否需要重寫整個腳本? – Benoit

+0

[如何在Windows命令行上獲取當前日期時間,使用文件名的合適格式?](http://stackoverflow.com/questions/203090/how-to-get-current-datetime-on -windows-command-line-in-a-suitable-format-for-us) – Jon

回答

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... 

希望它能幫助:)

相關問題