中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-24 04:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 日期转换星期 查看 1,304 回复 10
楼 主 日期转换星期 发表于 2008-02-26 12:38 ·  中国 北京 联通
初级用户
积分 39
发帖 16
注册 2008-02-25 12:15
18年会员
UID 111379
性别 男
状态 离线
任意一个日期将其转换成相应的星期的代码怎么写。

如:2008/02/26
转换得到:星期二
2 发表于 2008-02-26 13:13 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
vbs的话很简单就1~2条命令,但是现在还不知道函数
稍等~
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
-1 2008-05-12 08:43
第一高手 第二高手

3 发表于 2008-02-26 13:36 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
datepart("w",date)
4 回楼上 发表于 2008-02-26 13:40 ·  中国 北京 联通
初级用户
积分 39
发帖 16
注册 2008-02-25 12:15
18年会员
UID 111379
性别 男
状态 离线
datepart("w",date)
这命令行似乎不行,命令err.
5 发表于 2008-02-26 13:51 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
aDate = InputBox("请输入一个日期:", "BY: fastslz",date)

aWeek = DatePart("w", aDate)
Select Case aWeek
Case 1 Wscript.Echo "星期天"
Case 2 Wscript.Echo "星期一"
Case 3 Wscript.Echo "星期二"
Case 4 Wscript.Echo "星期三"
Case 5 Wscript.Echo "星期四"
Case 6 Wscript.Echo "星期五"
Case 7 Wscript.Echo "星期六"
End Select
第一高手 第二高手

6 抱歉 发表于 2008-02-26 14:12 ·  中国 北京 联通
初级用户
积分 39
发帖 16
注册 2008-02-25 12:15
18年会员
UID 111379
性别 男
状态 离线
以上代码是让我保存成bat来运行吗?还是其他
7 发表于 2008-02-26 14:34 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
vbs
8 发表于 2008-02-26 14:36 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
我不是说了吗,vbs

这个bat的
@echo off
>tmp.vbs Echo aDate = InputBox("请输入一个日期:", "BY: fastslz",date)
>>tmp.vbs Echo aWeek = DatePart("w", aDate)
>>tmp.vbs Echo Select Case aWeek
>>tmp.vbs Echo Case 1 Wscript.Echo "星期天"
>>tmp.vbs Echo Case 2 Wscript.Echo "星期一"
>>tmp.vbs Echo Case 3 Wscript.Echo "星期二"
>>tmp.vbs Echo Case 4 Wscript.Echo "星期三"
>>tmp.vbs Echo Case 5 Wscript.Echo "星期四"
>>tmp.vbs Echo Case 6 Wscript.Echo "星期五"
>>tmp.vbs Echo Case 7 Wscript.Echo "星期六"
>>tmp.vbs Echo End Select
for /f "delims=" %%i in ('cscript.exe //nologo tmp.vbs') do set aDate=%%i&del tmp.vbs
Echo %aDate%
pause
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
Climbing +10 2008-02-27 10:12
第一高手 第二高手

9 发表于 2008-02-26 14:37 ·  中国 北京 联通
初级用户
积分 39
发帖 16
注册 2008-02-25 12:15
18年会员
UID 111379
性别 男
状态 离线
好的谢谢
10 发表于 2008-02-27 14:05 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
bat版本的:
@echo off
:支持2008年,其他年份算法类似
:没有容错处理
:s
set "mod=145136140250"
set /p rq=输入:月/日
for /f "delims=/ tokens=1,2" %%a in ("%rq%") do set d=%%b&call set n=%%mod:~,%%a%%
set s=%n:~-1%
set/a w=(%d%+%s%)%%7
if %w% equ 0 set w=日
echo 2008/%rq%这一天是:星期%w%&echo.
goto :s


其实关于星期计算有:
基姆拉尔森计算公式
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 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
abcd +8 2008-02-27 14:15
11 发表于 2008-05-11 15:11 ·  中国 广东 东莞 电信
初级用户
★★
积分 118
发帖 66
注册 2005-10-21 03:27
20年会员
UID 43827
状态 离线
@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
论坛跳转: