timeAgo

From Second Life Wiki
Jump to navigation Jump to search
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.

Summary

Function: string TimeAgo( integer tm );

Returns a string that will give you the difference in time.

• integer tm Unix Time used for difference

See also: llGetUnixTime

Examples

//Created by Ugleh Ulrik

string TimeAgo(integer time)
{
    // time difference in seconds
    integer now = llGetUnixTime();
    integer timeDifference = now - time;

    // small bug fix for when timeDifference is 0
    if (timeDifference == 0)
        return "just now";

    list periods = ["second",
        "minute",
        "hour",
        "day",
        "week",
        "month",
        "year",
        "decade"];

    //the number equivalent to periods
    list lenghts = [1,
        60,
        3600,
        86400,
        604800,
        2630880,
        31570560,
        315705600];

    integer v = llGetListLength(lenghts) - 1;
    integer no;

    while((0 <= v) && (no = timeDifference/llList2Integer(lenghts, v) <= 1))
        --v;

    string output = llList2String(periods, v);

    //this will get the correct time in periods, then divide the timeDifference
    integer ntime = timeDifference / llList2Integer(lenghts, llListFindList(periods, [output]));

    //if integer 'no' is not equal to 1 then it should have an s at the end
    if(no != 1)
        output += "s";

    //This produces the finished output
    output = (string)ntime + " "+ output + " ago";
    return output;
}

default 
{
 
    touch_start(integer total_number)
    {
        integer now = llGetUnixTime();
        integer time = now - 180;

        // integer time is the current unix time minus 180 seconds (3 minutes)
        // the outcome will be "3 minutes ago"

        llSay(PUBLIC_CHANNEL,  TimeAgo(time));
    }
}