スクリプト/汎用関数/指定期間内か判定する

最終投稿者:Cdv30200 aoi icon mini aoihikawa 更新:2012/09/26 01:31:43
指定期間内か判定する
(ご自由にご利用ください)


<引数の内容>
isTimePeriod(開始年,開始月,開始日,開始時,開始分,終了年,終了月,終了日,終了時,終了分)

#うるう年の判定
def getUruuflg(y)
    return (y % 4) == 0 && (y % 100) != 0 || (y % 400) == 0
end
#経過時間の計算
def deffTime(t)
    mi = 0
    d_li = createArray()
    d_li = splitString("0,31,59,90,120,151,181,212,243,273,304,334,365",",")
    i = 0
    while i < getArrayLength(d_li)
        d_li[i] = toNumber(d_li[i])
        i = i + 1
    end
    j = t[0] - 1
    while j > 1999
        if getUruuflg(j)
            mi = mi + 527040
        else
            mi = mi + 525600
        end
        j = j - 1
    end
    if getUruuflg(t[0]) && (t[1] > 2)
       mi = mi + 1440
    end
    mi = mi + ((d_li[(t[1] - 1)] + (t[2] - 1)) * 1440)
    mi = mi + (t[3] - 1) * 60 + t[4]
    return mi
end
#期間中か判定する
def isTimePeriod(sy,sm,sd,sh,smi,ey,em,ed,eh,emi)
  t = getServerCurrentDate()
  if sy == 0 && ey == 0
    t[0] = 0; t[1] = 0; t[2] = 0
  end
  ntp = deffTime(t)
  
  st = createArray()
  st[0] = sy; st[1] = sm; st[2] = sd; st[3] = sh; st[4] = smi
  stp = deffTime(st)
  
  et = createArray()
  et[0] = ey; et[1] = em; et[2] = ed; et[3] = eh; st[4] = emi
  etp = deffTime(et)
  
  return (stp <= ntp && etp >= ntp)
end


使用例
#期間中か判定する
#2012年9月1日0:00 ~ 2012年12月31日23:59
if isTimePeriod(2012,9,1,0,0,2012,12,31,23,59)
  speak("期間中です")
else
  speak("期間外です")
end

#毎日10:00 ~ 15:59(年月日を0にします)
if isTimePeriod(0,0,0,10,0,0,0,0,15,59)
  speak("期間中です")
else
  speak("期間外です")
end


ご意見やご質問などありましたら
こちらのブログ記事まで。

コメントする

コメントするには、ログインする必要があります。

コメント一覧

コメントはありません。