2014-03-13 43 views

回答

0

這是批處理文件中的VBS腳本。

:: date 30 days ago 
@echo off 
set day=-30 
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s) 
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2) 
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a" 
del "%temp%\%~n0.vbs" 
set "YYYY=%result:~0,4%" 
set "MM=%result:~4,2%" 
set "DD=%result:~6,2%" 
set "date-then=%yyyy%-%mm%-%dd%" 

echo The date then was "%date-then%" 
pause 
+0

你能告訴我如何將日期轉換爲毫秒? – Prakki

+0

它可能會溢出批處理數學中的2^31限制。 – foxidrive

0

日期和時間的工作是很難只用本地的Windows批處理命令,特別是如果你正在處理爲可與時間戳可以找到大量的表現爲毫秒,因爲1970-01-01 00:00:00.000世界標準時間。作爲foxidrive已經證明,使用VBScript(或JScript)的計算很容易。

我寫了一個hybrid JScript/batch utility called getTimestamp.bat,可以很容易地處理批處理腳本中的日期和時間。該實用程序是純粹的腳本,可以從XP以後的任何現代Windows機器上本機運行。該實用程序中嵌入了完整的文檔。之前,今日(當地時間)

獲取日起30日內,並將其存儲在DT可變

call getTimestamp -od -30 -f {yyyy}-{mm}-{dd} -r DT 

沒有指定日期格式。該實用程序幾乎支持任何您想要的格式。自1970-01-01

獲取當前的日期/時間表示爲毫秒00:00:00.000 UTC和存儲在TS可變

call getTimestamp -f {ums} -r TS 

注:我懷疑,JScript的時間計算可能不佔閏秒。所以這個值可能不是100%準確的。

如果你想今天的午夜(當地時間)日期前30天的時間標記,表示爲毫秒,因爲1970-01-01 00:00:00.000 UTC和存儲在TS可變

call getTimestamp -od -30 -f {mm}/{dd}/{yyyy} -r DT 
call getTimestamp -d '%DT%' -F {ums} -r TS 

許多選項的效用。從命令提示符處輸入getTimestamp -?以獲取完整文檔。