1

I have this date & hour format 2016-03-07 15:13:49. And I would like to display it like 1 minute ago, 1 hour ago or 1 year ago depending on how long is the date from now.

c.k
  • 1,075
  • 1
  • 18
  • 35

3 Answers3

2

If you don't care the accuracy, I think moment is a better way.

For example:

var m = require('moment');
m("2016-03-07 15:13:49","YYYY-MM-DD HH:mm:ss").fromNow();  // 5 months ago
m("2016-07-28 12:13:49","YYYY-MM-DD HH:mm:ss").fromNow();  // 2 hours ago
m("2016-07-28 13:13:49","YYYY-MM-DD HH:mm:ss").fromNow();  // 36 minutes ago
m("2016-07-28 13:49:00","YYYY-MM-DD HH:mm:ss").fromNow();  // a minute ago
m("2016-07-28 13:50:00","YYYY-MM-DD HH:mm:ss").fromNow();  // a few seconds ago
youngwind
  • 475
  • 4
  • 5
1

You need to convert your date format to js date object and then you can use the timeSince function from this answer

var date = new Date('2016-03-07T15:13:49')

document.write("js date: " + date + "<br><br>");
document.write("timesince: ");

document.write(timeSince(date));

function timeSince(date) {

    var seconds = Math.floor((new Date() - date) / 1000);

    var interval = Math.floor(seconds / 31536000);

    if (interval > 1) {
        return interval + " years";
    }
    interval = Math.floor(seconds / 2592000);
    if (interval > 1) {
        return interval + " months";
    }
    interval = Math.floor(seconds / 86400);
    if (interval > 1) {
        return interval + " days";
    }
    interval = Math.floor(seconds / 3600);
    if (interval > 1) {
        return interval + " hours";
    }
    interval = Math.floor(seconds / 60);
    if (interval > 1) {
        return interval + " minutes";
    }
    return Math.floor(seconds) + " seconds";
}
Community
  • 1
  • 1
Raman Sahasi
  • 30,180
  • 9
  • 58
  • 71
  • Thanks that would be the solution. – c.k Jul 28 '16 at 03:56
  • Note that this function will not produce the expected output if the value is between 1 and 2 resulting in things like "75 minutes". A fix would be to use >= if the comparison – David Machado Apr 20 '20 at 14:59
0
var past_date = new Date('2016-07-28T05:13:49');    // the date will come here 
var time_diff = new Date()- past_date;     // getting the difference between the past date and the current date
var min = Math.floor(time_diff/60000); // Converting time in to minutes
var seconds = 59,
    minutes = Math.floor(min%60),
    hours = Math.floor(min/60);

if(hours > 24){ // Checking if the hours ids more than 24 to display as a day
   var days = hours/24;   
   days = days.toFixed(0);
   document.write("last updated:" + days + " days ago");
}else if(hours > 1){ // if time is less than the 24 hours it will display in hours
    document.write("last updated:" + hours + " hours ago");
}else{
    document.write("last updated:" + minutes + " minutes ago");
}
Yaswanth
  • 49
  • 1
  • 9