User:Zag McMillan/sl time timestamp
Jump to navigation
Jump to search
A quite ugly but working function to return a timestamp based on current time in SL. Works similar as llGetTimestamp(), but returns a string based on current time inworld rather than UTC.
<lsl>
string msGetTimestamp()
{
integer slsekunden=(integer)llGetWallclock();
integer gmtsekunden=(integer)llGetGMTclock();
integer differenz=gmtsekunden-slsekunden;
differenz=differenz/3600;
integer tag=(integer)llGetSubString(llGetTimestamp(),8,9);
integer monat=(integer)llGetSubString(llGetTimestamp(),5,6);
integer jahr=(integer)llGetSubString(llGetTimestamp(),0,3);
integer stunde=(integer)llGetSubString(llGetTimestamp(),11,12);
integer minute=(integer)llGetSubString(llGetTimestamp(),14,15);
stunde=stunde-differenz;
if (stunde<0)
{
stunde=24-stunde;
tag--;
if (tag==0)
{
monat--;
if (monat==1) tag=31;
if (monat==2) tag=28;
if (monat==3) tag=31;
if (monat==4) tag=30;
if (monat==5) tag=31;
if (monat==6) tag=30;
if (monat==7) tag=31;
if (monat==8) tag=31;
if (monat==9) tag=30;
if (monat==10) tag=31;
if (monat==11) tag=30;
if (monat==0) tag=31;
if(monat==0)
{
monat=12;
jahr--;
}
}
}
string ts=(string)tag;
string ms=(string)monat;
string ss=(string)stunde;
string ns=(string)minute;
if (llStringLength(ts)<2) ts="0"+ts;
if (llStringLength(ms)<2) ms="0"+ms;
if (llStringLength(ss)<2) ss="0"+ss;
if (llStringLength(ns)<2) ns="0"+ns;
return((string)jahr+"-"+ms+"-"+ts+"T"+ss+":"+ns+":"+llGetSubString(llGetTimestamp(),17,-1));
}
default {
state_entry()
{
llSay(0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
llSay(0,msGetTimestamp());
}
}
</lsl>