Skip to content

Instantly share code, notes, and snippets.

@cowboy
Forked from gf3/ago.js
Created June 2, 2011 20:21
Show Gist options
  • Save cowboy/1005222 to your computer and use it in GitHub Desktop.
Save cowboy/1005222 to your computer and use it in GitHub Desktop.
Super small relative dates
module.exports = (function(){
const MS =
{ seconds: 1000
, minutes: 60 * 1000
, hours: 60 * 60 * 1000
, days: 24 * 60 * 60 * 1000
, weeks: 7 * 24 * 60 * 60 * 1000
, months: 30 * 7 * 24 * 60 * 60 * 1000
, years: 365 * 24 * 60 * 60 * 1000 }
return ago
function ago ( origin ) {
var delta = new Date().getTime() - origin.getTime()
, ago
if ( ago = doDelta( 'years') )
return ~~ago + 'y'
else if ( ago = doDelta( 'months') )
return ~~ago + 'm'
else if ( ago = doDelta( 'weeks') )
return ~~ago + 'w'
else if ( ago = doDelta( 'days') )
return ~~ago + 'd'
else if ( ago = doDelta( 'hours') )
return ~~ago + 'h'
else if ( ago = doDelta( 'minutes') )
return ~~ago + 'm'
else if ( ago = doDelta( 'seconds') )
return ~~ago + 's'
return 'now'
function doDelta ( type ) {
var result = delta / MS[type]
return result >= 1 && result
}
}
})()
var ago = require( './ago' )
, now = new Date
console.log( ago( new Date( 2011, now.getMonth(), now.getDate(), now.getHours() - 5 ) ) ) // 5h
console.log( ago( new Date( 2011, now.getMonth(), now.getDate() - 15 ) ) ) // 2w
console.log( ago( new Date( 2006, now.getMonth(), now.getDate() ) ) ) // 5y
@mathiasbynens
Copy link

Nice!

Instead of new Date().getTime() (line 14), you could use Date.now().

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment