[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=-1
  3. for %%a in (天 一 二 三 四 五 六) do set /a n+=1 & set "%%a=!n!"&set "_!n!=%%a"
  4. set /p n=请指定天数:
  5. if %n% lss 0 (set/a d=^(7-^(~n+1^)%%7+%date:~-1%^)%%7&set x=前)else set/a d=(n+%date:~-1%)%%7&set x=后
  6. echo 今天是 %date:~-3% %n% 天%x% 是%date:~-3,2%!_%d%!
  7. pause
复制代码

TOP

原帖由 batman 于 2008-10-18 11:38 发表
terse就是terse,写出来的代码确实是精炼简洁,不过你这个计算公式实在是有点难懂,
我都看了半天才明白,总觉得没必要写这么复杂的公式,不知兄是否认同?

呵呵 我是这样想的  N天后的星期   就是(N+当天)%%7
由此得到N天前的星期  也就是  7-(N+当天)%%7
简化的话 可以去掉里面一括号 使d=(6-~n%%7+%date:~-1%)%%7
batman兄的意见呢?

[ 本帖最后由 terse 于 2008-10-18 13:31 编辑 ]

TOP

Re:batman兄
可以说你我思路上都一样: “其实这就是个今天向后几天(这个几天是小于7的)”
只是你的"(n+5)%%7,如余数是0就是星期一"  这里的 余数是0我以为应该是星期天  当然这和SET 有关
反推的思路  也就是转为几天后  然后用7-去  比如今天星期四  2天前其实就是5天后 这里的5就是7-2得到

TOP

返回列表