2009年11月02日
標準時間表示スクリプト(リンデンスクリプト Tips)
現在の日時をYYYY-MM-DD hh:mm:ssフォーマットで表示するスクリプトです。 Tips 13で日本標準時間を返すスクリプトをご紹介しましたが、今回のスクリプトは関数の引数に GMTからの時差(h)を指定することにより、その地域の標準時間を返すことが可能です。
「スクリプト内容」「使用方法」 1. オブジェクトを1つ作成します。(球でもボックスでも何でも構いません。) 2. オブジェクトにスクリプトをドラッグします。 以上です。 getRegionTimeの引数に各地域の時差(h)を指定することにより、その地域の 標準時間を表示します。 「スクリプトの説明」 llGetDate()及びllGetGMTclock()を使用して、現在の日時を取得しています。 llGetDate()は、UTCタイムゾーンの現在の日付を返す関数です。 llGetGMTclock()は、GMT午前0時から経過した秒数を返す関数です。 これらの関数から得た値を元にして、時差や閏年を考慮した時間を計算しています。 セカンドライフの時刻は、PST(サマータイム中はPDT)に基づいていますので、 getRegionTimeの引数に-8(サマータイム中は、-7)を指定するとSL時間と一致します。 日本であれば、GMTと9時間の差がありますので、引数に9を指定すると日本時間に 一致します。 [参考] リンデンスクリプトTips No.13 日本標準時表示スクリプト llGetDate llGetGMTclock llSetTimerEvent llSetText リンデンスクリプト Tips Indexへ// // SHOP ZERO Tips42 RegionStandardTime Script v1.0 // // Created by Zero2000 Kid 2009/11/01 // // GMT(Greenwich Mean Time) integer GMT=0; // JST(Japan Standard Time) integer JST=9; // PDT(Pacific Daylight Time) integer PDT=-7; // PST(Pacific Standard Time) integer PST=-8; string getRegionTime (integer offset) { string DateUTC = llGetDate(); integer Region_hour; string DateToday = ""; string timeToday = ""; integer year = (integer)llGetSubString(DateUTC, 0, 3); integer month = (integer)llGetSubString(DateUTC, 5, 6); integer day = (integer)llGetSubString(DateUTC, 8, 9); integer now =(integer)llGetGMTclock(); integer GMT_hour=now / 3600; integer minute=(now % 3600) / 60; integer second=now % 60; if (offset>0) { if (GMT_hour<(24-offset)) { Region_hour=GMT_hour+offset; } else { Region_hour=GMT_hour-(24-offset); if (day == 31) { if (month == 12) { year = year + 1; month = 1; } else { month = month + 1; } day = 1; } else if (day==30 && (month == 4 || month == 6 || month == 9 || month == 11)) { month = month + 1; day = 1; } else if (month==2) { if (!(year%400) || (year%100 && !(year%4))) { if (day==29) { month = month + 1; day = 1; } else { day = day+1; } } else { if (day==28) { month = month + 1; day = 1; } else { day = day+1; } } } else { day = day+1; } } } else { if (GMT_hour>=llAbs(offset)) { Region_hour=GMT_hour+offset; } else { Region_hour=24+GMT_hour+offset; if (day == 1) { if (month==1) { year = year - 1; month = 12; day = 31; } else if (month == 3) { month = month - 1; if (!(year%400) || (year%100 && !(year%4))) { day=29; } else { day=28; } } else if (month == 5 || month == 7 || month == 10 || month == 12) { month = month - 1; day = 30; } else { month = month - 1; day = 31; } } else { day = day-1; } } } if(month < 10) { DateToday = "0"; } DateToday+=(string)month + "-"; if(day < 10) { DateToday += "0"; } DateToday+=(string)day; if(Region_hour < 10) { timeToday = "0"; } timeToday+=(string)Region_hour + ":"; if(minute < 10) { timeToday += "0"; } timeToday+=(string)minute + ":"; if(second < 10) { timeToday += "0"; } timeToday+=(string)second; return (string)year + "-" + DateToday + " " + timeToday; } default { state_entry() { llSetTimerEvent(1.0); } on_rez(integer int) { llResetScript(); } timer(){ string gmt = "GMT(Greenwich Mean Time)\n" + getRegionTime(GMT); string jst = "JST(Japan Standard Time)\n" + getRegionTime(JST); string pdt = "PDT(Pacific Daylight Time)\n" + getRegionTime(PDT); string pst = "PST(Pacific Standard Time)\n" + getRegionTime(PST); llSetText(gmt+"\n"+jst+"\n"+pdt+"\n"+pst, <0.0, 1.0, 0.0>, 1.0); } }
サウンド再生スクリプト(リンデンスクリプト Tips)
カメラコントロール(リンデンスクリプト Tips)
プリムカウンター2(リンデンスクリプト Tips)
土地情報チェッカー(リンデンスクリプト Tips)
SIM負荷チェッカー(リンデンスクリプト Tips)
RSSリーダー(リンデンスクリプト Tips)
カメラコントロール(リンデンスクリプト Tips)
プリムカウンター2(リンデンスクリプト Tips)
土地情報チェッカー(リンデンスクリプト Tips)
SIM負荷チェッカー(リンデンスクリプト Tips)
RSSリーダー(リンデンスクリプト Tips)
Posted by Zero2000 Kidd at 00:34│Comments(2)
│リンデンスクリプトTips
この記事へのコメント
こんにちはぁ。LSLCON2009ではお世話になりましたぁ。
ええと、余計なお節介なんですけど、スクリプトをブログに載せるときに、
http://lsl-users.jp/codehighlight/
ここを使うときれいに出せるので、おためしくださーい。
ええと、余計なお節介なんですけど、スクリプトをブログに載せるときに、
http://lsl-users.jp/codehighlight/
ここを使うときれいに出せるので、おためしくださーい。
Posted by midori Paulse at 2009年11月02日 21:23
midoriさん
こんにちは^^
こちらこそお世話になりました。
これは便利ですねぇw
さっそく使わせてもらいました。
情報ありがとうございます;。
こんにちは^^
こちらこそお世話になりました。
これは便利ですねぇw
さっそく使わせてもらいました。
情報ありがとうございます;。
Posted by Zero2000 Kidd at 2009年11月07日 10:35