Javascript Convert Date To String (Past Tense)
have you ever wanted to convert a date string to be say something like this:
32 seconds ago (or)
12 minutes ago (or)
4 days ago (or)
2 months ago (or)
1 year ago
This is the javascript function to do it.
/*
* produces textual output ex '5 hours ago' from string formatted:
* alert( dateStringPastTense('2007-08-20 10:34:01 pm') );
* alert( dateStringPastTense('2009-02-20 14:34:23' ) );
* alert( dateStringPastTense('08/20/2008 11:29:43 pm') );
* alert( dateStringPastTense('08/20/2008 23:29:55' ) );
*/
function dateStringPastTense(date_input)
{
var dtpieces = date_input.split(" ");
var dpieces_his = dtpieces[1].split(":");
var dpieces_ymd = dtpieces[0].split("-");
if (dpieces_ymd == dtpieces[0])
{
var dpieces_mdy = dtpieces[0].split("/");
dpieces_ymd[0] = dpieces_mdy[2];
dpieces_ymd[1] = dpieces_mdy[0];
dpieces_ymd[2] = dpieces_mdy[1];
}
if (dtpieces[2] && dtpieces[2].toLowerCase()=='pm')
{
dpieces_his[0]=dpieces_his[0]*1 + 12;
}
dpieces_ymd[1]-=1;
var d = new Date();
d.setFullYear( dpieces_ymd[0], dpieces_ymd[1], dpieces_ymd[2] );
d.setHours ( dpieces_his[0], dpieces_his[1], dpieces_his[2] );
var sec = (new Date()).getTime() - d.getTime();
sec/=1000;
if (sec <0)
{
return "in future";
}
var string_def = {'second':60,'minute':60,'hour':24,'day':30,'month':12,'year':1000};
for(def in string_def)
{
if (sec < string_def[def])
{
return sec + " " + def + (sec>1? "s" : "")+ " ago";
}
sec= Math.floor( sec/string_def[def] );
}
return "over 1000 years ago";
}code snippets are licensed under Creative Commons CC-By-SA 3.0 (unless otherwise specified)
|