Board logo

标题: 日期转换星期 [打印本页]

作者: qnaqwtwc     时间: 2008-2-26 12:38    标题: 日期转换星期

任意一个日期将其转换成相应的星期的代码怎么写。

如:2008/02/26
转换得到:星期二
作者: fastslz     时间: 2008-2-26 13:13
vbs的话很简单就1~2条命令,但是现在还不知道函数
稍等~
作者: abcd     时间: 2008-2-26 13:36
datepart("w",date)
作者: qnaqwtwc     时间: 2008-2-26 13:40    标题: 回楼上

datepart("w",date)
这命令行似乎不行,命令err.
作者: fastslz     时间: 2008-2-26 13:51

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

作者: qnaqwtwc     时间: 2008-2-26 14:12    标题: 抱歉

以上代码是让我保存成bat来运行吗?还是其他
作者: abcd     时间: 2008-2-26 14:34
vbs
作者: fastslz     时间: 2008-2-26 14:36
我不是说了吗,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

作者: qnaqwtwc     时间: 2008-2-26 14:37
好的谢谢
作者: plp626     时间: 2008-2-27 14:05
bat版本的:
@echo off
:支持2008年,其他年份算法类似
:没有容错处理
:s
set "mod=145136140250"
set /p rq=输入:月/日[例:3/26]
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 ]
作者: senffon     时间: 2008-5-11 15:11
@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