Difference between revisions of "LlGetDate"
Jump to navigation
Jump to search
Aryn Lassard (talk | contribs) |
m |
||
(23 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
{{LSL_Function | {{LSL_Function | ||
|func_id=204|func_sleep=0.0|func_energy=10.0 | |func_id=204|func_sleep=0.0|func_energy=10.0 | ||
|func=llGetDate|return_type=string | |func=llGetDate|sort=GetDate|return_type=string | ||
|func_footnote | |func_footnote=If you wish to know the time as well use: [[llGetTimestamp]] which uses the format {{NoWrap|"YYYY-MM-DDThh:mm:ss.ff..fZ"}} | ||
|func_desc | |||
|return_text=that is the date | |return_text=that is the current date in the UTC time zone in the format {{NoWrap|"YYYY-MM-DD"}}. | ||
|spec | |spec | ||
|caveats | |caveats | ||
|constants | |constants | ||
|examples | |examples=<source lang="lsl2">// Birthday surprise | ||
|helpers | default | ||
|also_functions | { | ||
state_entry() | |||
{ | |||
llSetTimerEvent(0.1); | |||
} | |||
timer() | |||
{ | |||
if(llGetDate() == "2009-02-15") | |||
llSetText("HAPPY BIRTHDAY!", <0,1,0>, 1.0); | |||
else | |||
llSetText("A surprise is coming...", <0,1,0>, 1.0); | |||
llSetTimerEvent(3600.0); // check every hour. | |||
} | |||
}</source> | |||
<source lang="lsl2">// Function to calculate the numeric day of year | |||
integer dayOfYear(integer year, integer month, integer day) | |||
{ | |||
return day + (month - 1) * 30 + (((month > 8) + month) / 2) | |||
- ((1 + (((!(year % 4)) ^ (!(year % 100)) ^ (!(year % 400))) | (year <= 1582))) && (month > 2)); | |||
} | |||
default | |||
{ | |||
touch_end(integer count) | |||
{ | |||
list dateComponents = llParseString2List(llGetDate(), ["-"], []); | |||
integer year = (integer) llList2String(dateComponents, 0); | |||
integer month = (integer) llList2String(dateComponents, 1); | |||
integer day = (integer) llList2String(dateComponents, 2); | |||
llSay(0, "The current day of the year is " + (string) dayOfYear(year, month, day)); | |||
} | |||
}</source> | |||
<source lang="lsl2">// Function to calculate whether a current year is a leap year | |||
integer is_leap_year( integer year ) | |||
{ | |||
if( year % 4 ) return FALSE; // Not a leap year under any circumstances | |||
if( year <= 1582 ) return TRUE; // In the Julian calender before 24 February 1582, every fourth year was a leap year | |||
if( !( year % 400 )) return TRUE; // A leap century is a leap year if divisible by 400 | |||
if( !( year % 100 )) return FALSE; // Any other century is not a leap year | |||
return TRUE; // It is divisible by 4 and not a century and not Julian, therefore it is a leap year | |||
}</source> | |||
The previous script is way unnecessary for Avatar age, SL sales history etc. Here is all that is needed for 99% of SL applications. | |||
This code is in fact valid for all years from 1901 to 2099, as 2000 was a leap year. | |||
<source lang="lsl2"> | |||
if (year % 4) // TRUE if NOT a leap year | |||
</source> | |||
|helpers= | |||
=== Helper Functions === | |||
* [[Stamp2UnixInt|Timestamp: list format to Unix timestamp]] - ex: [2009, 2, 13, 3, 31, 30] to 1234567890 | |||
** compatible with [[llParseString2List]]( [[llGetDate]](), ["-"], [] ) (reports as first second of given day) | |||
* [[Stamp2WeekdayStr|Timestamp: Weekday from (Y, M, D)]] - ex: "Friday" from (Y, M, D) | |||
|also_functions={{LSL DefineRow||[[llGetTimestamp]]|Same format but with the time.}} | |||
|also_events | |also_events | ||
|also_tests | |also_tests | ||
|also_articles | |also_articles={{LSL DefineRow||[http://www.cl.cam.ac.uk/~mgk25/iso-time.html ISO 8601]|}} | ||
|notes | |notes | ||
|cat1=Time | |cat1=Time | ||
|cat2 | |cat2 | ||
|cat3 | |cat3 | ||
|cat4 | |cat4 | ||
}} | }} |
Latest revision as of 01:47, 22 January 2015
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: string llGetDate( );204 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
Returns a string that is the current date in the UTC time zone in the format "YYYY-MM-DD".
If you wish to know the time as well use: llGetTimestamp which uses the format "YYYY-MM-DDThh:mm:ss.ff..fZ"
Caveats
Examples
// Birthday surprise
default
{
state_entry()
{
llSetTimerEvent(0.1);
}
timer()
{
if(llGetDate() == "2009-02-15")
llSetText("HAPPY BIRTHDAY!", <0,1,0>, 1.0);
else
llSetText("A surprise is coming...", <0,1,0>, 1.0);
llSetTimerEvent(3600.0); // check every hour.
}
}
// Function to calculate the numeric day of year
integer dayOfYear(integer year, integer month, integer day)
{
return day + (month - 1) * 30 + (((month > 8) + month) / 2)
- ((1 + (((!(year % 4)) ^ (!(year % 100)) ^ (!(year % 400))) | (year <= 1582))) && (month > 2));
}
default
{
touch_end(integer count)
{
list dateComponents = llParseString2List(llGetDate(), ["-"], []);
integer year = (integer) llList2String(dateComponents, 0);
integer month = (integer) llList2String(dateComponents, 1);
integer day = (integer) llList2String(dateComponents, 2);
llSay(0, "The current day of the year is " + (string) dayOfYear(year, month, day));
}
}
// Function to calculate whether a current year is a leap year
integer is_leap_year( integer year )
{
if( year % 4 ) return FALSE; // Not a leap year under any circumstances
if( year <= 1582 ) return TRUE; // In the Julian calender before 24 February 1582, every fourth year was a leap year
if( !( year % 400 )) return TRUE; // A leap century is a leap year if divisible by 400
if( !( year % 100 )) return FALSE; // Any other century is not a leap year
return TRUE; // It is divisible by 4 and not a century and not Julian, therefore it is a leap year
}
The previous script is way unnecessary for Avatar age, SL sales history etc. Here is all that is needed for 99% of SL applications.
This code is in fact valid for all years from 1901 to 2099, as 2000 was a leap year.
if (year % 4) // TRUE if NOT a leap year
Useful Snippets
Helper Functions
- Timestamp: list format to Unix timestamp - ex: [2009, 2, 13, 3, 31, 30] to 1234567890
- compatible with llParseString2List( llGetDate(), ["-"], [] ) (reports as first second of given day)
- Timestamp: Weekday from (Y, M, D) - ex: "Friday" from (Y, M, D)