iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >计算机中批处理如何实现万年日历
  • 748
分享到

计算机中批处理如何实现万年日历

2023-06-08 09:06:58 748人浏览 泡泡鱼
摘要

这篇文章主要介绍了计算机中批处理如何实现万年日历,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。核心源码:: 月历查询工具 最初发表于CN-DOS::&nb

这篇文章主要介绍了计算机中批处理如何实现万年日历,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

核心源码

:: 月历查询工具 最初发表于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

以下是各计算部分算法:

计算星期:
基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日数+1,m表示月份数,y表示年数。
注意:在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,
例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

生肖及干支年计算方法是:

出生公元年数÷12,然后根据除得的商的余数,对照生肖排列就马上可以知道。
生肖排列是:猴(0)、鸡(1)、狗(2)、猪(3)、鼠(4)、牛(5)、虎(6)、兔(7)、龙(8)、蛇(9)、马(10)、羊(11)。

天干地支算法:
首先要能记住十大天干和十二地支,
十天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸;
十二地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥;
天干地支纪年法首先是天干在前,地支在后,比如今年2005就为-乙酉年,先来算算天干,有个公式:
4、 5、 6、 7、 8、 9、 0、 1、 2、 3 对应的十天干就是
甲、乙、丙、丁、戊、己、庚、辛、壬、癸,
数字为年代的最后的一位数字,比如今年是2005,最后一位是5,对应的天干就是乙;
地支的算法:用年代数除以12,后面的余数就代表某个地支,余数分别为:
4、 5、 6、 7、 8、 9、 10、 11、 0、 1、 2、 3,
代表地支为:子、丑、寅、卯、辰、巳、午、 未、 申、酉、戌、亥,
比如2005年为例:年代末尾数为5,对应的天干为乙,2005除以12,余数为1,对应的地支为酉,所以2005年为乙酉年。

农历日期部分的算法是:
阴历日期是以月亮的圆缺为计月单位,其以逢朔为初一,以月望为十五(大月为十六日),以月晦为二十 九日(大月为三十日)。然而目前记时通常用阳历日期表达,如欲将阳历日期换算成阴历日期可以用以下两种方法:其一是查《新编万年历》,如查1984年6月8日是阴历几日?翻开万年历6月10日是阴历十一,则逆推6月8日是阴历初九。其二可以利用公式推算阴历日期:
设:公元年数-1977(或1901)=4Q+R
则:阴历日期=14Q+10.6(R+1)+年内日期序数-29.5n
(注:式中Q、R、n均为自然数,R<4)
例:1994年5月7日的阴历日期为:
1994-1977=17=4×4+1
故:Q=4,R=1 则:5月7日的阴历日期为:
14×4+10.6(1+1)+(31+28+31+30+7)-29.5n
=204.2- 29.5n
然后用29.5去除204.2得商数6......27.2,6即是n值,余数27即是阴历二十七日。

感谢你能够认真阅读完这篇文章,希望小编分享的“计算机中批处理如何实现万年日历”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: 计算机中批处理如何实现万年日历

本文链接: https://www.lsjlt.com/news/253334.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 计算机中批处理如何实现万年日历
    这篇文章主要介绍了计算机中批处理如何实现万年日历,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。核心源码:: 月历查询工具 最初发表于CN-DOS::&nb...
    99+
    2023-06-08
  • php代码如何实现万年历
    这篇文章主要介绍“php代码如何实现万年历”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php代码如何实现万年历”文章能帮助大家解决问题。php代码实现万年历的方法:1、利用PHP的日期函数获取当前...
    99+
    2023-06-26
  • java万年历是如何实现的
    Java万年历一般是通过Java Swing或JavaFX等图形界面库实现的。其实现过程大致如下:1. 设计一个窗口,包括年份、月份...
    99+
    2023-05-13
    java万年历 java
  • 计算机中如何实现批处理进度条效果
    这篇文章主要介绍了计算机中如何实现批处理进度条效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、批处理文件实现进度条的效果一@echo off mod...
    99+
    2023-06-08
  • 如何实现远程批量修改计算机IP设置的批处理
    这篇文章主要介绍了如何实现远程批量修改计算机IP设置的批处理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。网络IP设置远处更改脚本。 当网络整改需要大量IP修改的时候,可利用...
    99+
    2023-06-08
  • 计算机网络中如何批处理中字符串分割实现代码
    这篇文章将为大家详细讲解有关计算机网络中如何批处理中字符串分割实现代码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。批处理 字符串分割 实例使用for命令可以对字符串进行分段处理。分割字符串@echo&n...
    99+
    2023-06-08
  • 批处理如何计算天数
    小编给大家分享一下批处理如何计算天数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码一、:: DateDel2.bat - 删除指...
    99+
    2023-06-09
  • 批处理如何实现倒计时
    这篇文章主要为大家展示了“批处理如何实现倒计时”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理如何实现倒计时”这篇文章吧。代码如下:@echo off echo exit|%ComSpec%...
    99+
    2023-06-09
  • 批处理中如何实现预处理
    这篇文章主要为大家展示了“批处理中如何实现预处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理中如何实现预处理”这篇文章吧。一、预处理究竟要做什么? 根据我的经验,预处理要做的是变量值的替...
    99+
    2023-06-08
  • Mysql中如何通过生日计算年龄
    这篇文章主要为大家展示了“Mysql中如何通过生日计算年龄”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mysql中如何通过生日计算年龄”这篇文章吧。方法一SE...
    99+
    2024-04-02
  • 批处理bat如何递归计算N!
    这篇文章主要介绍了批处理bat如何递归计算N!,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。核心代码:@echo offsetlocal enablede...
    99+
    2023-06-08
  • 计算机中如何使用批处理整理集合第1/3页
    这篇文章主要为大家展示了“计算机中如何使用批处理整理集合第1/3页”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“计算机中如何使用批处理整理集合第1/3页”这篇文章吧。先概述一下批处理是个什么东东...
    99+
    2023-06-09
  • 如何使用批处理实现计算机/网络设备状态监测脚本
    这篇文章主要为大家展示了“如何使用批处理实现计算机/网络设备状态监测脚本 ”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用批处理实现计算机/网络设备状态监测脚本 ”这篇文章吧。以前自己写的...
    99+
    2023-06-09
  • 计算机中如何通过批处理关闭135 137 445等端口
    这篇文章将为大家详细讲解有关计算机中如何通过批处理关闭135 137 445等端口,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。主要是通过bat操作防火墙添加规则,一般是tcp与udp。日前,全球近百个国...
    99+
    2023-06-08
  • 怎么使用批处理实现计算器功能
    小编给大家分享一下怎么使用批处理实现计算器功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一个用bat/批处理做的小计算器   这是我自己用bat/批处理做的小...
    99+
    2023-06-08
  • js如何实现日历的简单算法
    这篇文章将为大家详细讲解有关js如何实现日历的简单算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。最近有用到日历可需要编辑文本的日历,为了...
    99+
    2024-04-02
  • 如何在MySQL中从出生日期计算年龄?
    我们可以计算从出生日期算起的年龄,如下 -mysql> SET @dob = '1984-01-17'; Query OK, 0 rows affected (0.00 sec)上面的查询将在“dob”变量中传递值“1...
    99+
    2023-10-22
  • 批处理如何计算字符串的长度
    这篇文章主要为大家展示了“批处理如何计算字符串的长度”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理如何计算字符串的长度”这篇文章吧。代码如下:@echo off & setloca...
    99+
    2023-06-08
  • java如何实现日历应用程序设计
    这篇“java如何实现日历应用程序设计”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java如何实现日历应用程序设计”文章吧...
    99+
    2023-07-02
  • 如何理解计算机信息处理
    这篇文章主要介绍“如何理解计算机信息处理”,在日常操作中,相信很多人在如何理解计算机信息处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解计算机信息处理”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作