批處理獲得系統當前時間之前n天的時間
@echo off
::獲得前一天的系統時間
::時間處理部分來自網際網路。
SetLocal EnableDelayedExpansion
::if "%1"=="" echo 示例: %0 20080102 5 && pause>nul && exit /B
set dd=%DATE:~8,2%
set mm=%DATE:~5,2%
set yyyy=%DATE:~0,4%
set temp1=%yyyy%%mm%%dd%
::set temp1=20090527
set temp2=1
set YE=%temp1:~0,4%
set MO=%temp1:~4,2%
set DA=%temp1:~6,2%
set DG=%temp2%
for %%i in (YE MO DA DG) do if "!%%i!"=="" echo Caution,Error Format & pause>nul & exit/b
for %%j in (YE MO DA DG) do if !%%j! LEQ 0 echo Caution,Error Format & pause>nul & exit/b
set/a vY1=%YE% %% 400
set/a vY2=%YE% %% 4
set/a vY3=%YE% %% 100
if %vY1%==0 (set var=true) else (
if %vY2%==0 (
if %vY3%==0 (set var=false) else (set var=true)
) else (set var=false )
)
if %DG% GEQ 28 echo Error,Not Support Large Days! & pause>nul & exit /B
set LY=%YE%
set LM=%MO%
if %var%==false (
if %MO%==01 (if %DA% LEQ %DG% (set/a LY=%YE%-1) & (set/a LM=12+%MO%-1) & (set/a LD=31+%DA%-%DG%) else (set/a LD=%DA%-%DG%))
if %MO%==03 (if %DA% LEQ %DG% (set/a LM=%MO%-1) & (set/a LD=28+%DA%-%DG%) else (set/a LD=%DA%-%DG%))
for %%a in (02 04 06 11) do (if "%MO%"=="%%a" (if %DA% LEQ %DG% (set/a LM=%MO%-1) & (set/a LD=31+%DA%-%DG%) else (set/a LD=%DA%-%DG%)))
if %MO%==09 (if %DA% LEQ %DG% (set/a LM=8) & (set/a LD=31+%DA%-%DG%) else (set/a LD=%DA%-%DG%))
for %%b in (05 07 10 12) do (if "%MO%"=="%%b" (if %DA% LEQ %DG% (set/a LM=%MO%-1) & (set/a LD=30+%DA%-%DG%) else (set/a LD=%DA%-%DG%)))
if %MO%==08 (if %DA% LEQ %DG% (set/a LM=7) & (set/a LD=30+%DA%-%DG%) else (set/a LD=%DA%-%DG%))
) else (
if %MO%==01 (if %DA% LEQ %DG% (set/a LY=%YE%-1) & (set/a LM=12+%MO%-1) & (set/a LD=31+%DA%-%DG%) else (set/a LD=%DA%-%DG%))
if %MO%==03 (if %DA% LEQ %DG% (set/a LM=%MO%-1) & (set/a LD=29+%DA%-%DG%) else (set/a LD=%DA%-%DG%))
for %%a in (02 04 06 11) do (if "%MO%"=="%%a" (if %DA% LEQ %DG% (set/a LM=%MO%-1) & (set/a LD=31+%DA%-%DG%) else (set/a LD=%DA%-%DG%)))
if %MO%==09 (if %DA% LEQ %DG% (set/a LM=8) & (set/a LD=31+%DA%-%DG%) else (set/a LD=%DA%-%DG%))
for %%b in (05 07 10 12) do (if "%MO%"=="%%b" (if %DA% LEQ %DG% (set/a LM=%MO%-1) & (set/a LD=30+%DA%-%DG%) else (set/a LD=%DA%-%DG%)))
if %MO%==08 (if %DA% LEQ %DG% (set/a LM=7) & (set/a LD=30+%DA%-%DG%) else (set/a LD=%DA%-%DG%))
)
if %LM% LSS 10 set LM=0%LM:~-1%
if %LD% LSS 10 set LD=0%LD:~-1%
echo %LY%%LM%%LD%
for %%a in (01 02 03 04 05 06 07 08 09) do (
if "%LM%"=="%%a" (
set m= %LM:~1,1%)
)
for %%b in (10 11 12) do (
if "%LM%"=="%%b" (
set m= %LM%)
)
set LM_NEW=%m:~1,2%
echo %LY%%LM_NEW%%LD%
用於日誌處理。
對原有的程式碼進行修改,主要是月份為8月和9月時,計算上一個月時使用set /a=09-1時,會報錯:
“無效數字。數字常數只能是十進位制(17),十六位進位制(0x11)或
八進位制(021)。”
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7425608/viewspace-1022546/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- QT獲取系統當前時間QT
- Qt學習(5)獲取當前系統時間-實時顯示當前時間QT
- javascript獲取當前時間指定天數之前或者之後的日期JavaScript
- yapi 如何獲得: 當前時間和 n 天后的時間作為引數進行請求API
- 批處理以當前時間為檔名建立檔案
- Windows批處理中獲取系統日期、時間戳記Windows時間戳
- 查詢時間從前7天到當前時間
- 用Delphi獲取當前系統時間 (轉)
- iOS中獲取當前時間與簡單的處理iOS
- c++ 獲取當前時間周初凌晨時間戳(獲取當前時間週一凌晨時間戳)C++時間戳
- mybatis獲取當前時間MyBatis
- java獲取當前時間Java
- Qt獲取當前時間QT
- js獲取當前時間JS
- Qt 獲取當前時間QT
- MySQL如何獲取當前時間的前一天和後一天時間MySql
- MySQL 獲得當前日期時間(以及時間的轉換)MySql
- [windows]批處理獲取時間的long型值Windows
- js獲取當前時間上一個月前的時間JS
- javascript獲取當前的時間戳JavaScript時間戳
- js獲取當天時間戳JS時間戳
- js獲取指定時間日期和當前時間日期的相差多少時間JS
- js獲取某時間的當天0點時間戳 與某時間的當週週一0點時間戳JS時間戳
- js獲取當前的具體時間JS
- Javascript獲取當前時間戳的方法JavaScript時間戳
- python 如何獲取當前時間Python
- PHP獲取當前季度的開始時間和結束時間PHP
- php獲得時間PHP
- Android開發:獲取當前系統時間和日期的方法Android
- javascript獲取當前電腦系統時間程式碼例項JavaScript
- iOS專案開發實戰——獲取系統當前時間iOS
- 實時獲取當前時間程式碼例項
- PHP求時間間隔n天、周、月、年後的時間PHP
- js外掛--獲取指定時間距離當前時間狀態:上週,當前周,前天,昨天,今天,明天,後天,當前周,下週。JS
- 網路傳輸時間和客戶端處理時間的界定(批處理應用)客戶端
- js時間物件:獲取當前時間(格式化)- 程式碼篇JS物件
- 如何用Java獲取當前時間戳?Java時間戳
- ThinkPHP 在頁面獲取當前時間PHP