jike106397 发表于 2012-1-27 20:35:08

日期转星期脚本(不要钱的)

听说群里已经有这个功能的脚本了,我觉得也未必和我写的一样,就发下。


##根据 蔡勒(Zeller)公式计算
##定义和初始化各种变量
:global startNum
:global wNum 8

:global StrWeek "\C8\D5\D2\BB\B6\FE\C8\FD\CB\C4\CE\E5\C1\F9"
:global StrWeekPre "\BD\F1\CC\EC\CA\C7\A3\BA   \D0\C7\C6\DA"
:global StrMonth "janfebmaraprmayjunjulaugsepoctnovdec"

:global c [:pick [:system clock get date] 7 9]
:global y [:pick [:system clock get date] 9 11]
:global m [:pick [:system clock get date] 0 3]
:global d [:pick [:system clock get date] 4 6]
:global w 10
###转码到符合日期计算公式的条件中
:for i from=1 to=12 do={
   :if ([:pick $StrMonth ($i * 3 - 3) ($i * 3)] = $m) do={
      :set m $i
      :if (($m = 1) || ($m = 2)) do={
          :set m ($m + 12)
          :set y ($y - 1)
      }
   }
}
####计算
#计算公式值(把取得的变量代入蔡勒(Zeller)公式)
:set w ($y + ($y / 4)+($c / 4) - 2 * $c + (26 * ($m + 1)) / 10 + ($d - 1 ))

#由于未发现ROS有取余运算符,采用加一相除法取余数
:set startNum ($w / 7)
:for i from=1 to=7 do={      
   :if ((($w + $i) / 7) - $startNum=1) do={
         :if ($wNum = 8) do={
         :set wNum (7 - $i)
         }
   }
}
###将数字编码的星期表示转换成汉字 ,并写到日志里。
:log info message=($StrWeekPre . [:pick $StrWeek ($wNum * 2 ) ($wNum * 2 + 2)])

注册马 发表于 2012-1-29 20:35:08

楼主好会折腾~

jike106397 发表于 2012-1-29 21:26:50

楼上经典
其实已经很难有时间去理解这么长的文章。

小白充大神 发表于 2015-5-9 15:38:10

好评点赞...

llong 发表于 2015-5-10 06:37:14

拿出来分享,不让报酬,真是好人啊,这年头这样无私的人,不多见啦,赞一个!
页: [1]
查看完整版本: 日期转星期脚本(不要钱的)