国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > BAT > 正文

批處理萬年歷實現代碼(包括農歷日期)

2020-06-09 12:57:00
字體:
來源:轉載
供稿:網友

核心源碼

:: 月歷查詢工具 最初發表于CN-DOS:: 原創:foxjl 更新:namejm, qzwqzw,foxjl:: 計算農歷日期部分思路及算法來自"趣味東":: 輸入的日期格式為:年-月-日(-可以替換為:、/,可以混用):: 在日歷里面,★=當天:: 支持多種格式的日期輸入::: ① 若只輸入一個數,則認為是查詢當年月份,自動截取后兩位數字查詢,★標在1日上;:: ② 若輸入兩個數,則認為是查詢年和月,★標在1日上;:: ③ 輸全的話,★標在指定日期上 :: 關于年份的轉換::: ① 若年份上輸入的數字少于三位,則作如下轉換: ::   50~99判定為19xx::   0~49判定為20xx:: ② 若輸入的年份數字超過兩位,則截取后四位字符(不足部分在高位補0),::  按 ① 的規則計算該年份的日期; :: 07-08-04 增加針對陽歷的生肖及干支年計算;修改錯誤日期循環提示的BUG.:: 08-01-13 增加推算農歷日期的功能,會有一天左右誤差。@echo offcolor 1fmode con cols=40 lines=20setlocal enabledelayedexpansionset str=日一二三四五六七八九set sdate=%date%:Maincls&echo.:: 日期提取、格式化與校驗for /f "tokens=1,2,3 delims=-/: " %%i in ("%sdate%") do (  (set sy=%%i) && (set sm=%%j) && (set sd=%%k))if not defined sd set sd=1if not defined sm set sm=%sy%&set sy=%date:~0,4%(set sy=0000%sy%) && (set sm=00%sm%) && (set sd=00%sd%)(set sy=%sy:~-4%) && (set sm=%sm:~-2%) && (set sd=%sd:~-2%)set /a y=1%sy%-10000, m=1%sm%-100, d=1%sd%-100 2>nulif errorlevel 9167 goto Errorif %y% lss 100 (  if %y% lss 50 (set /a y+=2000) else (set /a y+=1900)  set sy=!y!)if %m% lss 13 if %d% lss 32 goto Calc:Errorecho.錯誤的日期.pause>nulcd.set sdate=%date%goto Main:Calc::計算農歷部分set/a Q=(y-1901)/4set/a R=y-1901-4*Qset n=0for %%i in (0,31,59,90,120,151,181,212,243,273,304,334) do (set /a n+=1if %m% equ !n! set z=%%i)set /a leap="^!(y%%4) & ^!(^!(y%%100)) | ^!(y%%400)"if %m% gtr 2 (if %leap% equ 0 (set /a z-=1) else (set /a z+=leap))set/a n=(140*Q+106*(R+1)+z*10+d*10)/295,H=(140*Q+106*(R+1)+z*10+d*10-295*n)/10if %h% equ 0 set h=29if %h% leq 10 (if %h% equ 10 (set h=初十) else (set h=初%h%)) else (set h=%h:~0,1%十%h:~-1%號)for /l %%i in (1,1,9) do (call set h=%%h:%%i=!str:~%%i,1!%%)set h=%h:0=%:: 計算生肖及干支年set sx=猴雞狗豬鼠牛虎兔龍蛇馬羊set tg=庚辛壬癸甲乙丙丁戊己set dz=申酉戌亥子丑寅卯辰巳午未set /a sxnum=%sy% %% 12set /a tgnum=%sy:~-1%title 農歷!tg:~%tgnum%,1!!dz:~%sxnum%,1!年 生肖:!sx:~%sxnum%,1! 農歷:%h%:: 計算每個月的天數set days=31for %%i in (4 6 9 11) do if %m% equ %%i set days=30:: 計算2月份的偏差set /a leap="^!(y%%4) & ^!(^!(y%%100)) | ^!(y%%400)"if %m% equ 2 set /a days=28+%leap%if %m% leq 2 (set /a y-=1& set /a m+=12):: 計算指定日期的星期數set /a w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%%7echo. %sy%年%sm%月  日期:%sy%-%sm%-%sd%,星期!str:~%w%,1!echo.:: 生成月歷set /a wb=(w+35-d) %% 7, we=wb+days+1, day=1echo.  日  一  二  三  四  五  六echo. ━━━━━━━━━━━━━━━━━━━set /p= <nulfor /l %%i in (0,1,37) do (  set "temp= "  if %%i GTR %wb% if %%i LSS %we% (    set temp= !day!    set temp=!temp:~-2!    if !d! EQU !day! set temp=★    set /a day+=1  )  set /p=  !temp!<nul  set /a "wm=(%%i+1)%%7"  if !wm! equ 0 echo.&echo.&set /p= <nul)echo.echo ━━━━━━━━━━━━━━━━━━━echo. 輸入日期可查詢當日星期并顯示當月月歷echo.set sdate=set /p sdate= 格式如:2007-02-03,[回車]退出:if defined sdate goto Main            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定西市| 龙海市| 克什克腾旗| 鄂温| 通城县| 平利县| 太康县| 嘉善县| 南岸区| 肇源县| 哈密市| 潜山县| 巢湖市| 应城市| 合肥市| 丰顺县| 许昌县| 肇源县| 晴隆县| 丰顺县| 涿州市| 卢氏县| 北流市| 柳林县| 云梦县| 屏山县| 时尚| 衡阳县| 克拉玛依市| 康马县| 平和县| 襄垣县| 临清市| 岑溪市| 大邑县| 监利县| 板桥市| 海阳市| 望谟县| 南郑县| 多伦县|