|
qnaqwtwc
初级用户
 
积分 39
发帖 16
注册 2008-2-25
状态 离线
|
『楼 主』:
日期转换星期
使用 LLM 解释/回答一下
任意一个日期将其转换成相应的星期的代码怎么写。
如:2008/02/26
转换得到:星期二
|
|
2008-2-26 12:38 |
|
|
fastslz
铂金会员
       DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
|
2008-2-26 13:13 |
|
|
abcd
银牌会员
    
积分 1436
发帖 739
注册 2007-10-11
状态 离线
|
|
2008-2-26 13:36 |
|
|
qnaqwtwc
初级用户
 
积分 39
发帖 16
注册 2008-2-25
状态 离线
|
|
2008-2-26 13:40 |
|
|
fastslz
铂金会员
       DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
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
|

第一高手 第二高手
我的小站
 |
|
2008-2-26 13:51 |
|
|
qnaqwtwc
初级用户
 
积分 39
发帖 16
注册 2008-2-25
状态 离线
|
|
2008-2-26 14:12 |
|
|
abcd
银牌会员
    
积分 1436
发帖 739
注册 2007-10-11
状态 离线
|
|
2008-2-26 14:34 |
|
|
fastslz
铂金会员
       DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
 『第 8 楼』:
使用 LLM 解释/回答一下
我不是说了吗,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
|

第一高手 第二高手
我的小站
 |
|
2008-2-26 14:36 |
|
|
qnaqwtwc
初级用户
 
积分 39
发帖 16
注册 2008-2-25
状态 离线
|
|
2008-2-26 14:37 |
|
|
plp626
银牌会员
     钻石会员
积分 2278
发帖 1020
注册 2007-11-19
状态 离线
|
   『第 10 楼』:
使用 LLM 解释/回答一下
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 ]
此帖被 +8 点积分 点击查看详情 评分人:【 abcd 】 | 分数: +8 | 时间:2008-2-27 14:15 |
|
|
|
2008-2-27 14:05 |
|
|
senffon
初级用户
 
积分 118
发帖 66
注册 2005-10-21
状态 离线
|
『第 11 楼』:
使用 LLM 解释/回答一下
@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
|
|
2008-5-11 15:11 |
|