找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: hcb

[脚本] 原创:计算星期几的脚本

[复制链接]
发表于 2008-1-4 19:10:06 | 显示全部楼层
朋友在么?脚本出错了...
脚本是根据你最后一次修改得到的
从08年开始就出错了,
1号应该星期2,显示成星期0了,
2号变成了星期2,
3号星期4,
今天4号就成了星期6,
只看见星期246
星期135就没有显示了...

1.jpg

今天是星期5,可是已经成星期6了,有解决办法么?
2.jpg

[ 本帖最后由 17941487 于 2008-1-4 19:24 编辑 ]
routeros
回复

使用道具 举报

发表于 2008-1-4 19:37:14 | 显示全部楼层
通过修改基准年搞掂了,不过原因我搞不懂....
3.jpg
已经显示正确
4.jpg.jpg
routeros
回复

使用道具 举报

 楼主| 发表于 2008-1-5 09:05:06 | 显示全部楼层
原因是对本月的判断有逻辑错误,修改后的脚本如下:

##############################################################
#脚本名称:week                                               #
#脚本功能:计算当前日期是星期几                               #
#脚本用法:在其他脚本中运行/sys scr run week                  #
#                         :delay 1s                          #
#         然后用变量$WEEK取得计算结果,0为星期天             #
#脚本作者:hcb                                                #
#创建日期:2007-11-30                                         #
##############################################################

:global WEEK 0
#-------------------------------------------------------
#取当前日期,变成数字YY(年),MM(月),DD(日)
:set str (jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec)
:set tmp [/sys clock get date]
:set YY [:tonum([:pick $tmp 7 11])]
:set s [:pick $tmp 4 6]
:if([:find $s "0"]=0) do={:set s [:pick $s 1 [:len $s]]}
:set DD [:tonum($s)]
:set n 1
:set MM $n
:set s [:pick $tmp 0  3]
:foreach i in=$str do={
  :if($s=$i) do={:set MM $n}
  :set n ($n + 1)
  }
#------------------------------------------------------
#以2000年1月1日星期6为基准,
#计算2000年1月1日到现在经过了多少天
#设置基准年
:set y1 2000
#设置基准年1月1日是星期几
:set w1 6
#计算初始天数,即星期几-1
:set day 0
:if($w1>0) do={:set day ($w1 - 1)} else={:set ady 6}
#计算到现在的总天数
:set d 0
:for y from=$y1 to=$YY do={
  :set m2 12
  :if($y=$YY) do={:set m2 $MM}
  :for m from=1 to=$m2 do={
#   ####若是本月,则该月取现在天数
    :if($y=$YY && $m=$MM) do={:set d $DD} \
    else={
#     ####若是2月,要考虑平月闰月
      :if($m=2) do={
#       ####润年是四年一润
        :if($y -($y/4)*4=0) do={:set d 29} else={:set d 28}
        }
      :if($m!=2) do={
#       ####若是小月,则该月天数为30天,否则是31天
        :if($m=4||$m=6||$m=9||$m=11) do={:set d 30} else={:set d 31}
        }
      }
#    ####总天数加该月天数
    :set day ($day + $d)
    }
  }
#----------------------------------------------------------
#计算总天数除以7的余数就是星期几
#这是一个特殊的算法,由于ROS没有求余的运算,又不支持小数,故如此
:set WEEK ($day -($day/7)*7)
routeros
回复

使用道具 举报

发表于 2008-1-5 13:43:02 | 显示全部楼层
这种贴要顶啊.支持!!!!!
routeros
回复

使用道具 举报

发表于 2009-1-24 13:00:10 | 显示全部楼层
本帖最后由 mbala555 于 2009-1-24 13:45 编辑

请问日期如何比较.如jan/22/2009经过12天后是X年X月X日.脚本怎么写?谢谢
routeros
回复

使用道具 举报

发表于 2009-1-24 14:48:36 | 显示全部楼层
哪位高人可否指点一下?
routeros
回复

使用道具 举报

发表于 2009-1-25 13:16:04 | 显示全部楼层
请教一个根据当前时间求10天后的日期的脚本.谢谢
例如今天jan/25/2009经过12天后是X年X月X日.脚本怎么写?谢谢
routeros
回复

使用道具 举报

发表于 2009-1-25 16:38:57 | 显示全部楼层
哪位高人帮帮忙,谢谢!
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-6-2 11:17 , Processed in 0.115627 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表