GetTimestampOffset
Revision as of 06:04, 13 May 2008 by Siann Beck (talk | contribs) (Removed accidentally-included text from borrowed page)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
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>