Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript timestamp to relative time

I'm looking for a nice JS snippet to convert a timestamp (e.g. from Twitter API) to a nice user friendly relative time (e.g. 2 seconds ago, one week ago etc).

Anyone care to share some of their favourite methods (preferably not using plugins)?

like image 560
wilsonpage Avatar asked May 24 '11 10:05

wilsonpage


People also ask

Is JavaScript getTime UTC?

getTime() . The method returns the number of milliseconds since the Unix Epoch and always uses UTC for time representation. Calling the method from any time zone returns the same UTC timestamp.


1 Answers

Well it's pretty easy if you aren't overly concerned with accuracy. What wrong with the trivial method?

function timeDifference(current, previous) {      var msPerMinute = 60 * 1000;     var msPerHour = msPerMinute * 60;     var msPerDay = msPerHour * 24;     var msPerMonth = msPerDay * 30;     var msPerYear = msPerDay * 365;      var elapsed = current - previous;      if (elapsed < msPerMinute) {          return Math.round(elapsed/1000) + ' seconds ago';        }      else if (elapsed < msPerHour) {          return Math.round(elapsed/msPerMinute) + ' minutes ago';        }      else if (elapsed < msPerDay ) {          return Math.round(elapsed/msPerHour ) + ' hours ago';        }      else if (elapsed < msPerMonth) {         return 'approximately ' + Math.round(elapsed/msPerDay) + ' days ago';        }      else if (elapsed < msPerYear) {         return 'approximately ' + Math.round(elapsed/msPerMonth) + ' months ago';        }      else {         return 'approximately ' + Math.round(elapsed/msPerYear ) + ' years ago';        } } 

Working example here.

You might want to tweak it to handle the singular values better (e.g. 1 day instead of 1 days) if that bothers you.

like image 149
fearofawhackplanet Avatar answered Sep 19 '22 19:09

fearofawhackplanet