题
我只是想弄清楚,
如何能一个批处理文件(CMD)告诉我,从任何日期,我有多少天了...... ???
如:
set setdate=24/07/2009
echo The date is now: %date%
echo Your set date is: %setdate%
echo You're %days% days left from %setdate%
谢谢!
解决方案
下面是在VBScript一个简单的方案:
Dim dt: dt = DateValue(WScript.Arguments.Unnamed(0))
Dim dtNow: dtNow = Now
Dim diff: diff = DateDiff("d", dtNow, dt)
WScript.Echo "The date is now: " & FormatDateTime(dtNow, vbShortDate)
WScript.Echo "Your set date is: " & FormatDateTime(dt, vbShortDate)
WScript.Echo "You're " & diff & " days left from " & FormatDateTime(dt, vbShortDate)
您可以从您的批处理文件中调用这个脚本并指定目标日期是这样的:
cscript filename.vbs 12/25/2009 //nologo
其他提示
......好吧,因为提问者想让我做所有的工作对他来说,这里的脚本:
@echo off & setlocal
set now=%date%
set then=2010-08-01
:: split into year, month, day
set nY=%now:~0,4%&set nM=%now:~5,2%&set nD=%now:~8,2%
set tY=%then:~0,4%&set tM=%then:~5,2%&set tD=%then:~8,2%
:: remove leading zero
if "%nM:~,1%"=="0" set nM=%nM:~1%
if "%tM:~,1%"=="0" set tM=%tM:~1%
if "%nD:~,1%"=="0" set nD=%nD:~1%
if "%tD:~,1%"=="0" set tD=%tD:~1%
set mdays=31 28 31 30 31 30 31 31 30 31 30 31
set n=0
set t=0
call :days n %nM% %mdays%
call :days t %tM% %mdays%
set /a d=(t+tD)-(n+nD) + ((tY-nY) * 365)
goto :skip
:days
set var=%1
set M=%2
set i=0
shift & shift
:days_loop
set /a i=i+1
if %i% geq %M% goto :EOF
set /a %var%=%var%+%1
shift & goto :days_loop
:skip
echo The difference between %now% and %then% is %d% days.
为了比较,在Python同样的事情:
import datetime
now = datetime.datetime.now()
then = datetime.datetime(
# Do NOT use leading zeros here.
year = 2010,
month = 8,
day = 1,
)
diff = then - now
据的可能的有可能实现,随着cmd.exe
简单的数学运算功能,但它会依赖于计算机的区域设置(如果你使用DD / MM / YYYY的日期格式,它会打破我的YYYY-MM-DD),它会占用大量的代码。
它可能是更容易只是使用脚本语言如Perl,PHP或者Python为。
不隶属于 StackOverflow