中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 16:45
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 批处理版万年历
可打印版本  16,651 / 44
第1楼 zjl5 发表于 2007-05-26 20:43
初级用户 发帖 15 积分 82
批处理版万年历
────────── 版主提示 ──────────
完善后的代码请看20楼 qzwqzw 的脚本
────────── 版主提示 ──────────


::算法:基姆拉尔森计算公式
::W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
::在日历里面★=当天
::还没有加入闰年的计算.所以所有的2月都是28天




[ Last edited by bjsh on 2007-7-31 at 02:36 PM ]
第2楼 lxmxn 发表于 2007-05-26 20:51
版主 发帖 4,938 积分 11,386
不错,加上判断是否闰年的功能就更加完美了。
第3楼 ieutk 发表于 2007-05-27 14:30
初级用户 发帖 48 积分 107
要是能查到农历就更好啦!哈~
第4楼 qzwqzw 发表于 2007-05-27 15:12
银牌会员 发帖 636 积分 2,343
试了试

除了2006-12这样的31天月份显示30天之外

其它月份都显示31天

问题出在这句

还需要继续努力啊
第5楼 my3439955 发表于 2007-05-27 16:13
中级用户 发帖 99 积分 272
这个日历也不错
http://www.cn-dos.net/forum/viewthread.php?tid=27739&fpage=11

还可以支持任意年包括闰年
http://www.cn-dos.net/forum/viewthread.php?tid=27739&page=2#pid195566

[ Last edited by my3439955 on 2007-5-27 at 04:20 PM ]
第6楼 my3439955 发表于 2007-05-27 16:23
中级用户 发帖 99 积分 272
Originally posted by ieutk at 2007-5-27 14:30:
要是能查到农历就更好啦!哈~


农历没有规则的公式,只能推算出一段时间然后进行查表
不信的话看看那些支持农历的万年历
农历的支持一般不会超过200年
公历的话就没有这个限制
可以到任意年
第7楼 zjl5 发表于 2007-05-27 17:45
初级用户 发帖 15 积分 82
Originally posted by qzwqzw at 2007-5-27 03:12 PM:
试了试

除了2006-12这样的31天月份显示30天之外

其它月份都显示31天

问题出在这句
第8楼 qzwqzw 发表于 2007-05-27 18:14
银牌会员 发帖 636 积分 2,343
农历这个东西,也许有不查表的办法

听我父亲说,原来家乡有一个二楞子

平时疯疯颠颠的

但唯独掌握一门“神技”十分让人佩服

那就是它可以将古往今来五百年来的老皇历默熟于心

农历大小月以及闰月等问题对他根本不是问题

我未见其人,至今不知道他采用的是什么办法

---------------------------------------------------------

从理性角度考虑

现如今所使用的农历

虽然是经过多少朝代历次修订而最终成制的

但最终仍然来源于最早的夏历

而夏历的修订和完善主要依赖于天文学的研究成果

除此而外,应该有纯数学的办法可以计算和预期

[ Last edited by qzwqzw on 2007-5-27 at 06:17 PM ]
第9楼 zjl5 发表于 2007-05-27 19:50
初级用户 发帖 15 积分 82
qzwqzw兄,我把中间的一部分

改成了

效果没有得到太大改善,更大的问题似乎出在for /l %%i in (%w%,1,%cyc%)
我实在想不出.请帮忙改善.
第10楼 qzwqzw 发表于 2007-05-28 00:29
银牌会员 发帖 636 积分 2,343
主要问题在于公式计算的星期顺序和日历显示的星期顺序并不一致

公式计算以星期一起始,星期日结束

日历显示则恰好相反

解决的办法很简单

将公式计算顺序或者日历显示顺序任意调换一个即可

调换公式的星期顺序,只要那句+1移到括号中即可

------------------------------------

另外,2006-12月的问题解决

需要再加一行显示,并同时再增加两个变量

-------------------------------------

其它还有一些问题

比如 if %d% geq 32 中的裸露变量

比如变量 m / d的0前缀问题

再就是变量的命名规范问题

---------------------------------------------

下面是我的代码

第11楼 zjl5 发表于 2007-05-28 00:57
初级用户 发帖 15 积分 82
谢谢,,这样才够完美.
第12楼 namejm 发表于 2007-06-02 23:38
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  在10楼的基础上,修改了一下,得到如下代码,效果的改变如下:

  1、日期数位置固定,星期数序列动态变化;

  2、10以内的日期前面不带0;

  3、再次输入当天日期的话,会一直显示“今天”而不是“当天”;


[ Last edited by namejm on 2007-6-2 at 11:50 PM ]
第13楼 qzwqzw 发表于 2007-06-03 00:07
银牌会员 发帖 636 积分 2,343
这种显示方式并不符合日常习惯

估计很难被人接受

如果不想使用过多的变量

可以使用for将日期顺序输出

只要控制好换行的时机就没有什么问题

另外最好可以控制一下年份的范围和格式

最多只需输入两位年份数

50~99判定为19xx
00~49判定为20xx

计算太远的星期没有太多意义
第14楼 namejm 发表于 2007-06-03 00:15
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  动态显示星期序列的做法确实是不太合乎习惯,刚才觉得这个很有意思,就拿来改编了一下,呵呵,仅作为一种新效果而推出。

  "计算太远的星期没有太多意义" 这句话不知道指的是什么,暂时没有什么过多的想法,若有什么有意思的想法的话,我也想听听^_^。
第15楼 qzwqzw 发表于 2007-06-03 02:16
银牌会员 发帖 636 积分 2,343
例如以下代码的效果

1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023