|
newrogram
新手上路
积分 5
发帖 1
注册 2007-3-26
状态 离线
|
『楼 主』:
[已结]批处理能做日期运算吗?
比如日期为2007-01-01,如何计算前一天的日期
2007-03-01,如何计算前一天的日期
[ Last edited by HAT on 2008-10-25 at 18:27 ]
|
|
2007-3-26 05:09 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
2 楼』:
To newrogram:
对于批处理来计算日期的问题,一般会比较麻烦,我推荐你用下面这个命令行工具(DateX.exe),它可以很好的完成日期的计算问题。
下面给几个演示的例子:
Quote: | ::计算2007-01-01的前1天:
C:\>datex -d 2007-01-01 -f yyyy-mm-dd -o -1
2006-12-31
::计算2007--03-07的后7天:
C:\>datex -d 2007-03-07 -f yyyy\mm\dd -o 7
2007\03\14 |
|
说明:-d 参数后面指定日期,如果不指定,就是当前日期了;-f 参数后面指定输出的日期格式,可以灵活变化;-o 参数后面指定要计算的天数,正数表示向后计算,负数表示向前计算。
此帖被 +1 点积分 点击查看详情 评分人:【 】 | 分数: +1 | 时间:2010-6-10 10:15 |
|
附件
1: datex.rar (2007-3-26 07:44, 34.22 K, 下载附件所需积分 1 点
,下载次数: 239)
|
|
2007-3-26 07:44 |
|
|
flyinspace
银牌会员
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第
3 楼』:
呵呵,利用%time:~0,2%截取的变量可以完成呢。
我就做了一个判断是否闰年的小东西出来玩。。
|
|
2007-3-26 14:31 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
4 楼』:
Quote: | Originally posted by flyinspace at 2007-3-26 01:31:
呵呵,利用%time:~0,2%截取的变量可以完成呢。
我就做了一个判断是否闰年的小东西出来玩。。 |
|
兄写错了吧,time 是计算时间的,而楼主是想计算日期;
另外,批处理计算日期的确比较麻烦,比如计算1900-04-11的前70天如何计算呢?除了要判断月份的大小(30或者31天)之外,还要判断是否是闰年的问题,我想问题还是比较复杂的。
我还是推荐用这个工具来完成。
[ Last edited by lxmxn on 2007-3-26 at 02:59 PM ]
|
|
2007-3-27 00:13 |
|
|
fjcase
初级用户
积分 53
发帖 23
注册 2007-2-2
状态 离线
|
|
2007-3-27 03:34 |
|
|
flyinspace
银牌会员
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第
6 楼』:
Quote: | Originally posted by lxmxn at 2007-3-26 11:13 AM:
兄写错了吧,time 是计算时间的,而楼主是想计算日期;
另外,批处理计算日期的确比较麻烦,比如计算1900-04-11的前70天如何计算呢 ... |
|
不好意思.我写错了。
计算日期确实比较麻烦.
至于你说的就要靠自定义了
例如.
1,定义一年12个月每一个月的天数.
2,定义输入的年份,之前的天还是之后的.多少天.
3,判断是否闰年
4,是闰年则2月加一天.不是则不变
5,两个call 做自加和自减运算(天数的运算)<其中要包含对年,月,日的考虑>
这个写得比较麻烦...虽然我已经写出来了。但好象没有多大意义..
还不如直接用c++写呢.那样代码简单得多.
|
|
2007-3-27 05:38 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
7 楼』:
Quote: | Originally posted by flyinspace at 2007-3-26 16:38:
不好意思.我写错了。
计算日期确实比较麻烦.
至于你说的就要靠自定义了
例如.
1,定义一年12个月每一个月的天数.
2,定义输入的年份,之 ... |
|
不需要用C++编写了,2楼的工具就可以了。
|
|
2007-3-27 05:47 |
|
|
flyinspace
银牌会员
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第
8 楼』:
嗯。同意:)
已经有的工具何必还要再写呢:)
而且还是免费的。哈哈。
再说了。这个问题好简单。也不是写不出来。
|
|
2007-3-27 05:54 |
|
|
stornager
中级用户
scriptlover
积分 328
发帖 131
注册 2007-3-25
状态 离线
|
『第
9 楼』:
2楼的工具GREAT。
谢谢楼住引荐。
|
|
2007-3-27 05:57 |
|
|
pz
新手上路
积分 10
发帖 5
注册 2007-2-27
状态 离线
|
|
2007-3-27 13:41 |
|
|
flyinspace
银牌会员
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第
11 楼』:
Quote: | Originally posted by lxmxn at 2007-3-25 06:44 PM:
To newrogram:
对于批处理来计算日期的问题,一般会比较麻烦,我推荐你用下面这个命令行工具(DateX.exe),它可以很好的完成日期的 ... |
|
想问一下。。
若是我把我写的计算日期的批处理拿出来分享是不是比较无聊??
而且写的批处理判断分之太多。。
感觉在这里拿出来会比较丢人。
|
|
2007-3-27 13:54 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
12 楼』:
To flyinspace:
兄如果可以发出来,那再好不过了,也是一种方法、一种思路嘛,也可以让论坛的朋友学习一下,改进一下。
|
|
2007-3-27 23:12 |
|
|
29984365
初级用户
积分 39
发帖 15
注册 2007-4-4
状态 离线
|
|
2007-4-4 05:09 |
|
|
wqjcaogen
初级用户
积分 22
发帖 7
注册 2007-4-5
状态 离线
|
『第
14 楼』:
可以试试这个
echo dt=cdate(#01/01/07#)-1>%temp%\tmp.vbs
echo s=right(year(dt),4) ^& "-" ^& right("0" ^& month(dt),2) ^& "-" ^& right("0" ^& day(dt),2)>>%temp%\tmp.vbs
echo wscript.echo s>>%temp%\tmp.vbs
for /f %%i in ('cscript /nologo %temp%\tmp.vbs') do @echo %%i
|
|
2007-4-5 06:00 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
15 楼』:
right(year(dt),4) ^& "-" ^& right("0" ^& month(dt),2) ^& "-" ^& right("0" ^& day(dt),2)?
echo s=year(dt) ^& "-" ^& month(dt) ^& "-" ^& day(dt)>>%temp%\tmp.vbs不是更简单?
此帖被 +1 点积分 点击查看详情 评分人:【 mazai 】 | 分数: +1 | 时间:2009-6-9 21:33 |
|
|
|
2007-4-5 07:11 |
|