中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 从日期判断星期 上一主题 | 下一主题
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『楼 主』:  从日期判断星期

比如20060110
如何通过以上日期判断是星期几?

2007-2-6 03:11
查看资料  发短消息 网志   编辑帖子
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 2 楼』:  

  提供一个思路:先确定一个已经知道是星期几的日期,然后计算20060110和那个日期相差多少天,然后用差值来除以7,取余数——问题的关键在于计算两个日期的差值,这又转化为以前那个经典老话题:某一日期的N天前是哪一天?



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-2-6 03:24
查看资料  发短消息 网志   编辑帖子
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 3 楼』:  

取得n天前的日期我会,但就是不会计算星期
比如今天是20070205 星期一 n天前的日期是20061210
该怎么计算呢?
20070205减20061210    怎么减呢?

2007-2-6 05:22
查看资料  发短消息 网志   编辑帖子
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 4 楼』:  

版主说的不错,你首先得有一个参照物,剩下的就是将日期间距转换为10进制的天数并减去7-参照星期,然后再用7除求余

2007-2-6 08:26
查看资料  发短消息 网志   编辑帖子
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 5 楼』:  

再来一个另类星期几查询:)

  Quote:

  1. @   echo off && setlocal
  2. ::  Redtek.2006 bbs.cn-dos.net 查询某年/月/日是星期几



  3. set /p setDate=请输入要查询的日期:(格式:年-月-日)


  4. ::  备份当前日期并设置新日期

  5.     for /f %%i in ('date/t') do set "当天日期备份=%%i"
  6.     echo %setDate%|date >nul


  7. ::  显示查询日期并恢复当前日期为备份日期

  8.     echo. && echo 您要查询的日期详细信息为: [ %date% ] && echo.
  9.     echo %当天日期备份%|date >nul




  10. Pause
        Redtek@sweetmeet.com发表于:  2007-02-05  20:26

注: 如果是服务器等与日期相连紧密的计算机请勿使用此代码。

   因实现原理是先备份当前日期,再设置指定日期,利用系统%date%得到星期几,然后再还原计算前的日期。

   在计算机上安装了有些对日期敏感的程序,如:进行Java开发的 JCreator pro 等敏感软件,如果日期被更改为过去时,就是再改回来其已经作废。



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2007-2-6 09:23
查看资料  发送邮件  发短消息 网志   编辑帖子
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 6 楼』:  

楼上兄,一个字,“赞”

2007-2-6 09:38
查看资料  发送邮件  发短消息 网志   编辑帖子
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 7 楼』:  

利用刚学会的VBS
@echo off
for %%n in (week1-日 week2-一 week3-二 week4-三 week5-四 week6-五 week7-六) do set Tmp$=%%n&&call set %%Tmp$:-==%%

:loop
cls
echo.
set input=
set /p input=  请输入日期(格式: 2007/1/1):
if not defined input exit
echo.
>tmp.vbs echo wscript.echo weekday(#%input%#)
for /f "tokens=* delims=-" %%i in ('"cscript //nologo tmp.vbs"') do call echo   星期%%week%%i%%
del tmp.vbs
echo.
pause
goto loop
加上一个根据 9 楼修改的:
@echo off
for %%n in (week1-日 week2-一 week3-二 week4-三 week5-四 week6-五 week7-六) do set Tmp$=%%n&&call set %%Tmp$:-==%%

:loop
cls
echo.
set input=
set /p input=  请输入日期(格式: 20070101):
if not defined input exit
echo.
>tmp.vbs echo wscript.echo Weekday(CDate("%input:~0,4%-%input:~4,2%-%input:~6,2%"))
for /f "tokens=* delims=-" %%i in ('"cscript //nologo tmp.vbs"') do call echo   星期%%week%%i%%
del tmp.vbs
echo.
pause
goto loop
[ Last edited by zh159 on 2007-2-6 at 03:07 PM ]

2007-2-6 14:39
查看资料  发短消息 网志   编辑帖子
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 8 楼』:  

5楼的方法确实不错,不过要更改系统时间,似觉总有点不够完美,各位还有什么高招吗?

2007-2-6 16:29
查看资料  发短消息 网志   编辑帖子
112183883
初级用户





积分 128
发帖 31
注册 2006-10-23
状态 离线
『第 9 楼』:  

何不用VBS呢?
<script language="vbscript">
<!--
MsgBox Weekday(CDate("2006-01-10")-1)
-->
</script>


2007-2-6 17:55
查看资料  发送邮件  发短消息 网志   编辑帖子
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 10 楼』:  

记得小时候奥数有个公式的,可以再查下。

2007-2-6 21:16
查看资料  发短消息 网志   编辑帖子
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 11 楼』:  

取得两个日期的差已经解决,现在的问题是怎么判断星期?
//比如 已知2007/02/08/星期四  如何确定 18天前的星期呢?
就是如何将当前星期减1或2..........?

[ Last edited by 26933062 on 2007-2-8 at 03:47 AM ]

2007-2-8 16:40
查看资料  发短消息 网志   编辑帖子
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 12 楼』:  

帮你顶一下,越来越有难度了

2007-2-8 22:01
查看资料  发送邮件  发短消息 网志   编辑帖子
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by 26933062 at 2007-2-8 03:40:
取得两个日期的差已经解决,现在的问题是怎么判断星期?
//比如 已知2007/02/08/星期四  如何确定 18天前的星期呢?
就是如何将当前星期减1或2..........?

...


@echo off
for %%n in (week1-日 week2-一 week3-二 week4-三 week5-四 week6-五 week7-六) do set Tmp$=%%n&&call set %%Tmp$:-==%%

:loop
cls
echo.
set input=
set week=+0
set /p input=  请输入日期(格式: 20070101):
if not defined input exit
set /p week=  请输入间隔天数(格式: +8(-8),默认为 0):
echo.
>tmp.vbs echo wscript.echo Weekday(CDate("%input:~0,4%-%input:~4,2%-%input:~6,2%")%week%)
for /f "tokens=* delims=-" %%i in ('"cscript //nologo tmp.vbs"') do call echo   星期%%week%%i%%
del tmp.vbs
echo.
pause
goto loop


2007-2-9 05:23
查看资料  发短消息 网志   编辑帖子
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 14 楼』:  

MsgBox WeekdayName(Weekday(CDate(Now)))

2007-2-9 06:00
查看资料  发短消息 网志   编辑帖子
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 15 楼』:  

借楼上的:
MsgBox WeekdayName(Weekday(CDate(Now)-18))

+-天数
@echo off
:loop
cls
echo.
set input=
set week=+0
set /p input=  请输入日期(格式: 20070101):
if not defined input exit
set /p week=  请输入间隔天数(格式: +8(-8),默认为 0):
echo.
>tmp.vbs echo wscript.echo WeekdayName(Weekday(CDate("%input:~0,4%-%input:~4,2%-%input:~6,2%")%week%))
for /f %%i in ('"cscript //nologo tmp.vbs"') do call echo   %%i
del tmp.vbs
echo.
pause
goto loop
[ Last edited by zh159 on 2007-2-8 at 06:42 PM ]

2007-2-9 06:05
查看资料  发短消息 网志   编辑帖子
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: