针对1582 10 4 ----1582 10 15 的测试- @echo off&setlocal enabledelayedexpansion
- (FOR /l %%i in (2298883 1 2299603) DO (
- set JD=%%i
- IF !JD! GEQ 2299161 set /a "JD+=1+(JD*100-186721625)/3652425-(JD*100-186721625)/3652425/4"
- set /a "B=JD+1524,Y=(B*100-12210)/36525,D=36525*Y/100"
- set /a "M=(B-D)*100/3061,D=B-D-3061*M/100,M=(M-2)%%12+1,Y-=4715+^!(2/M)"
- set "str=!Y!:!M!:!D!"
- set /a "M=(M+9)%%12+3,Y-=M/13,JD=36525*(Y+4716)/100+3061*(M+1)/100+D-1524"
- REM 1582年10月4日后重新计算闰年,先前每4年一闰.
- set /a "JD+=(2-Y/100+Y/400)*^!(2299161/JD)"
- ECHO !str! !JD!
- ))>Yjd.txt
- start "" "Yjd.txt"
- PAUSE
复制代码
- @echo off&setlocal enabledelayedexpansion
- for %%i in (31 28 31 30 31 30 31 31 30 31 30 31) do set /a N+=1&set "M_!N!=%%i"
- set JDX=2298883
- for /l %%i in (1582 1 1583) do (
- IF %%i gtr 1582 (
- set /a "N=^!(%%i%%4)^^^!(1582/%%i)&^!(%%i%%400)^^^!(1582/%%i)&^!(%%i%%100)"
- ) else set /a "N=^!(%%i%%4)"
- set /a M_2=28+N
- for /l %%j in (1 1 12) do (
- set /a "M=(%%j+9)%%12+3,Y=%%i-M/13"
- for /l %%k in (1 1 !M_%%j!) do (
- set /a "JD=36525*(Y+4716)/100+3061*(M+1)/100+%%k-1524,JDX+=1"
- set /a "JD+=(2-Y/100+Y/400)*^!(2299161/JD)" 2>nul
- IF !JDX! NEQ !JD! set ERR=!err!$err:%%i:%%j:%%k !JD! !JDX!$
- REM 1582年10月4日后初始日须减10天
- if "%%i:%%j:%%k" == "1582:10:5" set/a JDX-=10
- )
- )
- )
- IF DEFINED ERR echo !err:$=^
-
- !
- ECHO !JD! !JDX!
- pause
复制代码
|