Difference between revisions of "GetTimestampOffset"
Jump to navigation
Jump to search
Siann Beck (talk | contribs) (Created page) |
Siann Beck (talk | contribs) m (Removed accidentally-included text from borrowed page) |
||
Line 4: | Line 4: | ||
<lsl> | <lsl> | ||
string | 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> | ||
{{LSLC|Library}}{{LSLC|Examples}} | {{LSLC|Library}}{{LSLC|Examples}} |
Revision as of 06:04, 13 May 2008
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>