中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 13:21
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 日期转换星期
可打印版本  1,356 / 10
第1楼 qnaqwtwc 发表于 2008-02-26 12:38
初级用户 发帖 16 积分 39
日期转换星期
任意一个日期将其转换成相应的星期的代码怎么写。

如:2008/02/26
转换得到:星期二
第2楼 fastslz 发表于 2008-02-26 13:13
铂金会员 发帖 2,315 积分 5,493 来自 上海
vbs的话很简单就1~2条命令,但是现在还不知道函数
稍等~
第3楼 abcd 发表于 2008-02-26 13:36
银牌会员 发帖 739 积分 1,436
datepart("w",date)
第4楼 qnaqwtwc 发表于 2008-02-26 13:40
初级用户 发帖 16 积分 39
回楼上
datepart("w",date)
这命令行似乎不行,命令err.
第5楼 fastslz 发表于 2008-02-26 13:51
铂金会员 发帖 2,315 积分 5,493 来自 上海
第6楼 qnaqwtwc 发表于 2008-02-26 14:12
初级用户 发帖 16 积分 39
抱歉
以上代码是让我保存成bat来运行吗?还是其他
第7楼 abcd 发表于 2008-02-26 14:34
银牌会员 发帖 739 积分 1,436
vbs
第8楼 fastslz 发表于 2008-02-26 14:36
铂金会员 发帖 2,315 积分 5,493 来自 上海
我不是说了吗,vbs

这个bat的
第9楼 qnaqwtwc 发表于 2008-02-26 14:37
初级用户 发帖 16 积分 39
好的谢谢
第10楼 plp626 发表于 2008-02-27 14:05
银牌会员 发帖 1,020 积分 2,278
bat版本的:

其实关于星期计算有:
基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日数+1,m表示月份数,y表示年数
只是这个算法比上面的算法复杂,代码也长.

[ Last edited by plp626 on 2008-2-27 at 02:09 PM ]
第11楼 senffon 发表于 2008-05-11 15:11
初级用户 发帖 66 积分 118
@ECHO OFF
set /a y = %date:~0,4%
if %date:~5,1% EQU 0 set /a m = %date:~6,1%
if %date:~5,1% NEQ 0 set /a m = %date:~5,2%
if %date:~8,1% EQU 0 set /a d = %date:~9,1%
if %date:~9,1% NEQ 0 set /a d = %date:~8,2%
if %m% EQU 1 set /a m = 13
if %m% EQU 2 set /a m = 14

set /a w = (d + 2*m+3*(m+1)/5+y+y/4-y/100+y/400) - ((d + 2*m+3*(m+1)/5+y+y/4-y/100+y/400)/7)*7 + 1
set /a yy = (y - 4*(y/4))
if %m% EQU 13 if %yy% EQU 0 set /a w = w -2
if %m% EQU 14 if %yy% EQU 0 set /a w = w -2
if %m% EQU 13 if %yy% NEQ 0 set /a w = w - 1
if %m% EQU 14 if %yy% NEQ 0 set /a w = w - 1
if %w% EQU -1 set /a w = 6
if %w% EQU 0 set /a w = 7
IF %w% == 6 echo 今天是星期六
IF %w% == 7 echo 今天是星期天
pause
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023