2014-03-13 54 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 -?以获取完整文档。