00254 00/01/11 19:18 (発言者削除)
投稿者 : よこしま



00255 00/01/11 19:22 RE:00253 getdate で取得した日付の一週
投稿者 : よこしま   コメントを投稿する

こんにちは, とほほさん.

以前作成したスクリプトからいかのものを発見しました
のでご参考まで

使い方は

call CalDate "000101", "1"

message #return

みたいな感じです.

メッセージボックスに

991231

が表示されます



;ここから


;************ 日付の計算 *********
; 渡された日数分さかのぼった日付を返す
; 閏年と2000年以降にも一応対応

CalDate:
        datetolinear(#1), ##target0
        ##target = ##target0 - value(#2)
        #year = part(#1, 0, 2)
        datetolinear(#year + "0101"), ##gantan
        ##year = value(#year)

CalDateSub:
        ##day = ##target - ##gantan
        ;##day=1/1から何日経過しているか

        switch ##year
                case 96, 92, 88, 84, 80, 0, 4, 8, 12
                        ##add = 1
                case default
                        ##add = 0
        endswitch

        if(##day<0)
                ##year = ##year - 1
                if(##year<0)
                        ##year = ##year + 100
                endif
                switch ##year
                        case 96, 92, 88, 84, 80, 0, 4, 8, 12
                                ##backdays = 366
                        case default
                                ##backdays = 365
                endswitch
                ##gantan = ##gantan - ##backdays 
                goto CalDateSub
        elseif(##day<31)
                #month = "01"
        elseif(##day<59 + ##add)
                #month = "02"
        elseif(##day<90 + ##add)
                #month = "03"
        elseif(##day<120 + ##add)
                #month = "04"
        elseif(##day<151 + ##add)
                #month = "05"
        elseif(##day<181 + ##add)
                #month = "06"
        elseif(##day<212 + ##add)
                #month = "07"
        elseif(##day<243 + ##add)
                #month = "08"
        elseif(##day<273 + ##add)
                #month = "09"
        elseif(##day<304 + ##add)
                #month = "10"
        elseif(##day<334 + ##add)
                #month = "11"
        else
                #month = "12"
        endif

        if(##year<10)
                #year == "0" + ##year
        else
                #year == ##year
        endif

        datetolinear(#year + #month + "01"), ##target0

        ##day = ##target - ##target0 + 1

        if(##day<10)
                #day = "0" + ##day
        else
                #day = ##day
        endif
        #target == #year + #month + #day
return #target



;ここまで




よこしま

Send 00/01/11


新規に投稿する