中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 12:21
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS批处理 & 脚本技术(批处理室) » 批处理版万年历
可打印版本  17,280 / 44
第16楼 Michael 发表于 2007-06-03 11:16
钻石会员 发帖 3,041 积分 10,056
Originally posted by qzwqzw at 2007-5-27 06:14 PM:
农历这个东西,也许有不查表的办法

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

平时疯疯颠颠的

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

那就是它可 ...


唯一的办法就是教会你家乡的“二愣子”学会批处理。呵呵。
第17楼 namejm 发表于 2007-06-03 13:32
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  发个使用更加方便一点的代码,对日历多余的空行做删除处理,修正了15楼代码中查询2007年7月份时只有30天的错误,此错误是由于当月1日正好是星期日、而37次循环只能扫描到30日引起的,更多的改变请看代码说明。


[ Last edited by namejm on 2007-6-3 at 02:50 PM ]
第18楼 qzwqzw 发表于 2007-06-03 14:25
银牌会员 发帖 636 积分 2,343
2007年7月的问题我注意到了

不过那时已没有时间改了
----------------------------------

空行的删除会让提示信息和输入日期为止频繁变动

对排版效果的改善起不到积极作用

所以我没有考虑
----------------------------------
日期格式化检查部分的改动比较乱

输入7-6-3得到的是7-06-03(年份没有格式化)

输入0得到的是2007-00-01(月份没有校验)

月与日的缺省值原本是10月/10日

只是考虑到实现起来比较简单
----------------------------------
当日/今日的显示

现在觉得意义不大

尤其是与带星期的%date%比较

[ Last edited by qzwqzw on 2007-6-3 at 02:33 PM ]
第19楼 namejm 发表于 2007-06-03 14:57
荣誉版主 发帖 1,737 积分 5,226 来自 成都
Originally posted by qzwqzw at 2007-6-3 14:25:
输入7-6-3得到的是7-06-03(年份没有格式化)

  想把这个代码做成万年历,7年表示公元7年,所以没法格式化。
输入0得到的是2007-00-01(月份没有校验)

  17楼的代码已经添加了对日期和月份为0时的检测。
当日/今日的显示
现在觉得意义不大
尤其是与带星期的%date%比较

  碰到带星期格式的%date%,确实比较令人头痛,提取时间的代码很难做到完全兼容。另外,日期分隔符也可以人为指定,这就更难以兼容了。
第20楼 qzwqzw 发表于 2007-06-03 15:36
银牌会员 发帖 636 积分 2,343
已经说过了,万年历没有太多意义

有谁会查公元元年的星期呢?

那时候都甚至没有格里高利历法

如果真想做专业的年表

那就需要连公元前一起考虑

谁知道这个公式在公元前是否仍然适用

而且你的代码也已经加入了0~55的判断

那就说明也默认了0~55是+了2000年的
----------------------------------------------------

将日期格式化校验代码简化后如下



[ Last edited by qzwqzw on 2007-8-5 at 06:48 PM ]
第21楼 namejm 发表于 2007-06-03 16:10
荣誉版主 发帖 1,737 积分 5,226 来自 成都
Originally posted by qzwqzw at 2007-6-3 15:36:
已经说过了,万年历没有太多意义
有谁会查公元元年的星期呢?
那时候都甚至没有格里高利历法

  呵呵,万年历确实没太多的意义,我就把它当作游戏来做吧^_^。

而且你的代码也已经加入了0~55的判断
那就说明也默认了0~55是+了2000年的

  实际上,在我的代码里,我加的是00~55的判断,并非0~55,所以,如果要让脚本自动加上19或20的前缀的话,就要输入两位数的年份。

  20楼的代码充分考虑了大众的阅读习惯和查询习惯,并对日期做了格式化处理,已经非常完善了。只是关于年份转换的那部分说明,直接从我那段代码里复制过来,所描述的效果和你的代码功能不完全吻合,建议把它改成这样:
:: 关于年份的转换:
:: ① 若年份上输入的数字少于三位,则作如下转换:
:: 50~99判定为19xx
:: 0~49判定为20xx
:: ② 若输入的年份数字超过两位,则截取后四位字符(不足部分在高位补0),
:: 按 ① 的规则计算该年份的日期;
第22楼 qzwqzw 发表于 2007-06-03 22:16
银牌会员 发帖 636 积分 2,343
多谢指出

已经修正
第23楼 zjl5 发表于 2007-06-16 03:05
初级用户 发帖 15 积分 82
还是找不到算农历的方法,只能算出生肖和农历干支年.
第24楼 whswbiori 发表于 2007-08-01 05:00
新手上路 发帖 5 积分 10
气氛真好 你们2个好活跃啊 看了3,4个帖子 都有你们
]
第25楼 kidzgy 发表于 2007-08-01 09:17
中级用户 发帖 129 积分 262
到底最完美一点的是拿一个啊?
第26楼 kidzgy 发表于 2007-08-01 09:21
中级用户 发帖 129 积分 262
20楼的,如果日期输入错误,会出现死循环。一直都是错误。
第27楼 qzwqzw 发表于 2007-08-01 10:15
银牌会员 发帖 636 积分 2,343
请说详细些
输入什么样的错误日期?
在什么地方死循环?
第28楼 youxi01 发表于 2007-08-01 12:33
高级用户 发帖 247 积分 846 来自 湖南==》广东
namejm兄和qzwqzw兄还有这么高的兴致啊,佩服ing
第29楼 kidzgy 发表于 2007-08-01 18:04
中级用户 发帖 129 积分 262
Originally posted by qzwqzw at 2007-8-1 10:15 AM:
请说详细些
输入什么样的错误日期?
在什么地方死循环?

我复制你的代码到bat中,不管输入什么,字母也好,按照你的格式输入也好,07-02-03都没有用,回车之后提示错误,此时按任意键回不了主菜单,造成一个死循环,一直停留在错误界面内,若不关闭的话。
第30楼 qzwqzw 发表于 2007-08-01 18:36
银牌会员 发帖 636 积分 2,343
无法复现的你的错误
如果你懂得简单的批处理调试技巧的话
可以在代码的错误提示前
插入一条语句查看此时变量接受输入的结果

echo [%OS%][%date%][%sDate%][%y%=%m%=%d%]
上一页  1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023