ソラマメブログ

2007年04月27日

経過日数を計算

いろいろやってると、作ったけど使わなかった、なんて処理が出てきます。
何かに使おう…なんて思いつつも今ひとつ使いどころがなかったりするんですよね。
まぁそんなのばっかりだから困り物ですが。

そんな貴重な(?)ボツコレクションから1つ。
"YYYY-MM-DD" 形式の日付から、ある決まった日付(1970-01-01 1600-01-01)からの経過日数を求める関数です。
これを使うと、ある日付からの経過日数を求める事ができます。
※不具合検証中。とりあえず訂正しました。

integer getPastDay(string day){
integer y=(integer)llGetSubString(day,0,3);
integer m=(integer)llGetSubString(day,5,6);
integer d=(integer)llGetSubString(day,8,9);
if(m<=2){
m+=12;
y--;
}
// y-=1970; //base
y-=1600; //base
return (30*m)+(((m+1)*3)/5)+(d - 33) + (365*y)+(y/4)-(y/100)+(y/400);
}

default{
touch_start(integer n){
string day = "2007-01-01";
integer past = getPastDay(llGetDate()) - getPastDay(day);
llOwnerSay("It has passed from "+day+" on the "+(string)past+"th today.");
}
}

工夫すればカウントダウンなどにも使えそうですね。

しかし、blogは勝手に改行が入ったりすのでコード類は載せ辛いな…。



この記事へのトラックバックURL

http://tomoneko.slmame.com/t3508