2013-09-08 2 views
0

Я создаю фид Instagram с JQuery на своем сайте и хочу показать, сколько времени прошло с момента отправки сообщения в короткой форме: 23H или 2D или 3M или 1Y в зависимости от как долго это было. У меня есть два объекта даты, но я не могу понять, как рассчитать разницу и отобразить ее, как я хочу.Дата Разница, сколько прошло HDMY

Я довольно новыми для JS/Jquery и, насколько я мог бы получить было:

var pd = new Date(postDate); 
var nd = new Date(); 
var nd = nd.getTime(); 
var difference = nd-pd; 

Как вычислить разницу между двумя датами в часы, дни, месяцы и годы?

Спасибо.

+1

високосные годы сделать это значительно нетривиальным. –

+0

И разные месячные длины. –

ответ

2

Выполнение чего-либо с датами, как правило, является болезненным. Если вы не намерены использовать этот точный формат, вы можете использовать вместо него библиотеку.

moment.js has a .fromnow() function.

timeago.js или может быть использован для обновления элементов на странице периодически, так что если пользователь покидает страницу открытой в течение нескольких минут, отметки времени будут подсчитывать.

1

Вы можете сделать это, чтобы получить время, прошедшее с тех пор опубликовал

var timeDiff = Math.abs(nd.getTime() - pd.getTime()); 
var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
0

вы можете попробовать, как это.

var pd = new Date(postDate); 
var nd = new Date(); 


var Hours = nd.getHours() - pd.getHours(); 
var Days = nd.getDay() - pd.getDay(); 
var Months = nd.getMonth() - pd.getMonth(); 
var Years = nd.getYear() - pd.getYear(); 

или получить millisecods различию

var miliseconds = (nd - pd).getTime(); //gets time in miliseconds since 1/1/1970 

затем использовать логику для расчета часов, дней, месяцев и лет

вы можете посмотреть на этой Work with a time span in Javascript moments

ар date1 = новая дата («7/ноябрь/2012 20:30:00»); var date2 = новая дата («20/ноябрь/2012 19:15:00»);

var diff = date2.getTime() - date1.getTime();

var days = Math.floor (diff/(1000 * 60 * 60 * 24)); diff - = дни * (1000 * 60 * 60 * 24);

var hours = Math.floor (diff/(1000 * 60 * 60)); diff - = часы * (1000 * 60 * 60);

var mins = Math.floor (diff/(1000 * 60)); diff - = mins * (1000 * 60);

var seconds = Math.floor (diff/(1000)); diff - = секунды * (1000);

console.log (days + "days:" + hours + "hours:" + mins + "minutes:" + seconds + "seconds");

0

Мое решение грязное, но прямое: рассчитать их самостоятельно.Время начала

Запись:

var BEGIN_TIME=new Date(); 
var HOUR=BEGIN_TIME.getHours(); 
var MINUTE=BEGIN_TIME.getMinutes(); 
var SECOND=BEGIN_TIME.getSeconds(); 

Тогда сделайте так, некоторые математические

var today=new Date(); 
    h=today.getHours(); 
    m=today.getMinutes(); 
    s=today.getSeconds(); 

    s = s - SECOND; 
    if (s<0) { s=s+60; m=m-1; } 
    m = m - MINUTE; 
    if (m<0) { m=m+60; h=h-1; } 
    h = h - HOUR; 
Смежные вопросы