本帖最后由 caruko 于 2011-5-27 00:24 编辑
绝对值法,即用输入日期(数)减去每个星座的2个日期,取绝对值最小的一组。
开始以为只要几句代码,写起来才发现很多的判断。
修改了一下,找了不少二进制资料,使用set /a 位运算,直接得到整数的绝对值。 减少了if 判断。- @echo off&setlocal enabledelayedexpansion
- set /p input=输入日期:&set/p=!input! 为 <nul
- for /f "tokens=1,2 delims=-" %%a in ("-!input:-0=-!") do set /a dt=%%a*100+%%b,ofset=40
- for /f "skip=11 tokens=1-5 delims=月日- " %%1 in (%~snx0) do (
- set /a ofset1=dt-%%2*100-%%3,tp=ofset1,tp=tp">>"31,ofset1=ofset1"^"tp,ofset1=ofset1-tp
- set /a ofset2=dt-%%4*100-%%5,tp=ofset2,tp=tp">>"31,ofset2=ofset2"^"tp,ofset2=ofset2-tp
- if !ofset1! lss !ofset2! (set /a ost=ofset1) else set /a ost=ofset2
- if !ost! lss !ofset! (set /a ofset=ost&set ecode=%%1 %%2月%%3日-%%4月%%5日)
- )
- echo,!ecode!
- pause>nul&goto :eof
- 白羊座 3月21日-4月19日
- 金牛座 4月20日-5月20日
- 双子座 5月21日-6月21日
- 巨蟹座 6月22日-7月22日
- 狮子座 7月23日-8月22日
- 处女座 8月23日-9月22日
- 天枰座 9月23日-10月23日
- 天蝎座 10月24日-11月22日
- 射手座 11月23日-12月21日
- 摩羯座 12月22日-1月19日
- 水瓶座 1月20日-2月18日
- 双鱼座 2月19日-3月20日
复制代码
|