Difference between revisions of "GetTimestampOffset"

From Second Life Wiki
Jump to: navigation, search
(Created page)
 
m (Removed accidentally-included text from borrowed page)
Line 4: Line 4:
  
 
<lsl>
 
<lsl>
string  sbGetTimeStamp(integer  intOffset) {
+
string  sbGetTimestamp(integer  intOffset) {
 
     // Start with December for purposes of wrapping
 
     // Start with December for purposes of wrapping
 
     list    lstDays  = [31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
 
     list    lstDays  = [31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
Line 80: Line 80:
 
}
 
}
 
</lsl>
 
</lsl>
 
For technical support, requests, etc., use the Search under the Groups Tab and search for .::Prototype::.
 
 
if you have any problems getting this script to work either contact me inworld [[User:Revolution_Perenti|Revolution Perenti]]
 
or visit out Open Source Section at skidz partz we have many different versions of this system.
 
[http://slurl.com/secondlife/Snow%20Crash/128/128/23 Snow Crash]
 
  
 
{{LSLC|Library}}{{LSLC|Examples}}
 
{{LSLC|Library}}{{LSLC|Examples}}

Revision as of 05:04, 13 May 2008

This function returns llGetTimestamp() with an hour offset. It will wrap day, month and year as required. Offsets of more than 24 hours either way are not supported.

<lsl> string sbGetTimestamp(integer intOffset) {

   // Start with December for purposes of wrapping
   list    lstDays  = [31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
   string  strTimestamp = llGetTimestamp();
   list    lstTime  = llParseString2List(strTimestamp, ["-", ":", ".", "T"], []);
   integer intYear  = llList2Integer(lstTime, 0);
   integer intMonth = llList2Integer(lstTime, 1);
   integer intDay   = llList2Integer(lstTime, 2);
   integer intHour  = llList2Integer(lstTime, 3) + intOffset;
   string  strYear;
   string  strMonth;
   string  strDay;
   string  strHour;
   if (intOffset == 0) { return strTimestamp; }
   // Add a day to February in leap years
   if (intYear % 4 == 0 && (intYear % 100 != 0 || intYear % 400 == 0)) {
       lstDays = llListReplaceList(lstDays, [29], 2, 2);
   }
   if (intOffset < 0) {
       if (intHour < 0) { 
           intHour+= 24;
           --intDay;
       }
       if (intDay < 1) {
           intDay = llList2Integer(lstDays, --intMonth);
       }
       if (intMonth < 1) {
           intMonth = 12;
           --intYear;
       }
   }
   if (intOffset > 0) {
       if (intHour > 23) {
           intHour-= 24;
           ++intDay;
       }
       if (intDay > llList2Integer(lstDays, intMonth)) {
           intDay = 1;
           ++intMonth;
       }
       if (intMonth > 12) {
           intMonth = 1;
           ++intYear;
       }
   }
   strYear  = (string)intYear;
   strMonth = (string)intMonth;
   strDay   = (string)intDay;
   strHour  = (string)intHour;
   if (llStringLength(strMonth) < 2) { strMonth = "0" + strMonth; }
   if (llStringLength(strDay)   < 2) { strDay   = "0" + strDay;   }
   if (llStringLength(strHour)  < 2) { strHour  = "0" + strHour;  }
   return
       strYear                   + "-" + 
       strMonth                  + "-" + 
       strDay                    + "T" + 
       strHour                   + ":" + 
       llList2String(lstTime, 4) + ":" + 
       llList2String(lstTime, 5) + "." + 
       llList2String(lstTime, 6) + "Z";

} </lsl>