从"命令输入"获取日期

时间:2015-05-05 02:38:02

标签: date batch-file

我已经创建了一个用于计算日期的脚本,但我无法从用户那里获得正确的输入。我已创建了一个用于分隔输入的脚本。

让我们说用户输入 / ban myth 1d

[剧本已经知道" 1d"是一个论点]

我希望脚本能够创建一个名为time的变量,其中in具有用户输入的时间[天]。 所以,如果时间是" 1d" %time%等于1

或者如果用户键入" 1m" %time%等于30。 其他例子是:

2m=60
1w=7
2w=14
1y=365

任何想法?

计算时间会很酷,但只有在你想要的时候。

2 个答案:

答案 0 :(得分:0)

这是一个纯粹的批处理解决方案:

rem save the second parameter to a variable so we can get the bits
set _timeSpec=%2

rem get the last character of the timespec == period
set _period=%_timeSpec:~-1%

rem get the number of periods - all but the last character (to cope with 2 digits)
set _numPeriods=%_timeSpec:~0,-1%



set _time=0

if "%_period%"=="d" set /A _time=%_numPeriods%
if "%_period%"=="w" set /A _time=%_numPeriods% * 7
if "%_period%"=="m" set /A _time=%_numPeriods% * 30
if "%_period%"=="y" set /A _time=%_numPeriods% * 365

echo %_time%

如果你把某些东西放进去,它不会识别,例如15z它只会落空而%_time%仍然为零,所以你也应该为此考试。

更新:它区分大小写,因此您可能还想为每个

添加大写选项
if "%_period%"=="W" set /A _time=%_numPeriods% * 7

答案 1 :(得分:-1)

我真的很喜欢python。以下是输入开始日期,开始时间和持续时间以及计算结束日期和结束时间的方法。

from datetime import datetime,timedelta

da = raw_input("Start Date [MM_DD_YY]: ")
st = raw_input("Start Time [HH:MM]: ")
id = raw_input("Impact Duration [HH:MM]: ")

startdate = datetime(int('20'+da.split('_')[2]),int(da.split('_')[0]),int(da.split('_')[1]),int(st.split(':')[0]),int(st.split(':')[1]))
enddate = startdate + timedelta(hours=int(id.split(':')[0]),minutes=int(id.split(':')[1]))
startdate_str =  str(startdate.month)+'/'+str(startdate.day)+'/'+str(startdate.year)
starttime_str =  format( startdate , '%H:%M:%S')
endtime_str = format( enddate , '%H:%M:%S')
enddate_str = str(enddate.month)+'/'+str(enddate.day)+'/'+str(enddate.year)