/ Published in: JavaScript
* Returns a description of this past date in relative terms.
* Takes an optional parameter (default: 0) setting the threshold in ms which
* is considered "Just now".
*
* Examples, where new Date().toString() == "Mon Nov 23 2009 17:36:51 GMT-0500 (EST)":
*
* new Date().toRelativeTime()
* --> 'Just now'
*
* new Date("Nov 21, 2009").toRelativeTime()
* --> '2 days ago'
*
* // One second ago
* new Date("Nov 23 2009 17:36:50 GMT-0500 (EST)").toRelativeTime()
* --> '1 second ago'
*
* // One second ago, now setting a now_threshold to 5 seconds
* new Date("Nov 23 2009 17:36:50 GMT-0500 (EST)").toRelativeTime(5000)
* --> 'Just now'
*
*/
* Takes an optional parameter (default: 0) setting the threshold in ms which
* is considered "Just now".
*
* Examples, where new Date().toString() == "Mon Nov 23 2009 17:36:51 GMT-0500 (EST)":
*
* new Date().toRelativeTime()
* --> 'Just now'
*
* new Date("Nov 21, 2009").toRelativeTime()
* --> '2 days ago'
*
* // One second ago
* new Date("Nov 23 2009 17:36:50 GMT-0500 (EST)").toRelativeTime()
* --> '1 second ago'
*
* // One second ago, now setting a now_threshold to 5 seconds
* new Date("Nov 23 2009 17:36:50 GMT-0500 (EST)").toRelativeTime(5000)
* --> 'Just now'
*
*/
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
Date.prototype.toRelativeTime = function(now_threshold) { var delta = new Date() - this; now_threshold = parseInt(now_threshold, 10); if (isNaN(now_threshold)) { now_threshold = 0; } if (delta <= now_threshold) { return 'Just now'; } var units = null; var conversions = { millisecond: 1, // ms -> ms second: 1000, // ms -> sec minute: 60, // sec -> min hour: 60, // min -> hour day: 24, // hour -> day month: 30, // day -> month (roughly) year: 12 // month -> year }; for (var key in conversions) { if (delta < conversions[key]) { break; } else { units = key; // keeps track of the selected key over the iteration delta = delta / conversions[key]; } } // pluralize a unit when the difference is greater than 1. delta = Math.floor(delta); if (delta !== 1) { units += "s"; } return [delta, units].join(" "); };
URL: https://raw.github.com/ry/node_chat/master/client.js