本帖最后由 yu2n 于 2014-12-11 10:11 编辑
PK第一个方案BAT+VBS版本……- @echo off
- call :_DateAdd 2014.12.30 -5
- echo, 2014.12.30 5天前是 %dt%
- call :_DateAdd 2014-12-30 +5
- echo, 2014-12-30 5天后是 %dt%
- call :_DateAdd 2014/12/30 +500
- echo, 2014/12/30 500天后是 %dt%
- pause
-
- ' 返回日期(修正系统日期分隔符不同的问题) By Yu2n 2014.12.10
- ' 参数1日期,参数2为加减天数
- Goto :Eof
- :_DateAdd
- (echo, If IsDate^("%~1"^) Then
- echo, dt=CDate^("%~1"^)
- echo, Else
- echo, For Each s1 In Split^(". - /"^)
- echo, For Each s2 In Split^(". - /"^)
- echo, If IsDate^(Replace^("%~1",s1,s2^)^) Then dt=CDate^(Replace^("%~1",s1,s2^)^)
- echo, Next
- echo, Next
- echo, End If
- echo, dt = DateAdd^("d", Eval^("%~2"^), dt^)
- echo, WScript.Echo Right^(Year^(dt^),4^) ^& "-" ^& Right^("0" ^& Month^(dt^),2^) ^& "-" ^& Right^("0" ^& Day^(dt^),2^))>"%tmp%\_DateAdd.vbs"
- for /f "delims=" %%i in ('CScript //NoLogo "%tmp%\_DateAdd.vbs"') do set dt=%%i
- goto :Eof
复制代码 结果:- 2014.12.30 5天前是 2014-12-25
- 2014-12-30 5天后是 2015-01-04
- 2014/12/30 500天后是 2016-05-13
- 请按任意键继续. . .
复制代码 另外,再发一个VBS版……- d1 = "2014.03.01"
- nAdd = "-3"
- d2 = DateAdd("d", Eval(nAdd), GetDate(d1))
- d2 = Right(Year(d2),4) & "-" & Right("0" & Month(d2),2) & "-" & Right("0" & Day(d2),2)
- WScript.Echo d2
-
- ' 返回日期(修正系统日期分隔符不同的问题) By Yu2n 2014.12.10
- Function GetDate(ByVal strDate)
- If IsDate(strDate) Then GetDate = CDate(strDate) : Exit Function
- Dim s1, s2
- For Each s1 In Split(". - /")
- For Each s2 In Split(". - /")
- If IsDate(Replace(strDate,s1,s2)) Then GetDate=CDate(Replace(strDate,s1,s2)) : Exit Function
- Next
- Next
- End Function
复制代码
|