2016-05-09 6 views
0

У меня есть четыре поля в моем HTML. Два являются полями датпикера (один для датирования другого для текущего). Аналогичным образом, два других являются полями тайм-пика (один для времени и времени для времени).Получить разницу во времени между двумя разными датами с меткой времени?

<input type="text" id="from-datepicker"/> 
    <input class="timepicker" name="timepicker" id="from-timepicker"/> 
<input type="text" id="to-datepicker"/> 
    <input class="timepicker" name="timepicker" id="to-timepicker"/> 

Даты отображаются и используются в формате гггг-мм-дд, в то время как формат времени 24-часовые часы, как 23:45:52. Теперь, я просто хочу знать, как я могу вычислить разницу во времени между двумя отметками, что разность между 20 Oct 2015 11:00:00 и 28 Oct 2015 13:15:00 возвращает 7 days 2 hours and 15 minutes

Я знаю, как я могу получить разницу между двумя датами в JavaScript, но есть ли какая-либо библиотека, которая предоставляет различия с использованием метки времени?

+0

Использовать moment.js, 2.1kb красоты –

+0

Вы собираетесь использовать библиотеку для каждой функции 30 строк, которая вам нужна? –

+0

Я не получил вас @ChrisAaker –

ответ

2

Это функция, которую я использую. Просто измените вывод, чтобы удалить часть «назад». Возможно, измените client_time и server_time, чтобы быть более подробными для вашего конкретного использования.

И на самом деле, возможно, добавить еще один if/else для вашей конкретной потребности, следуя общему формату.

Pub.prettyTime = function (server_time) { 
    var MINUTE = 60,  // 000060 seconds in a minute 
     HOUR = 3600,  // 003600 seconds in an hour 
     DAY = 43200,  // 43,200 seconds in a day 
     NORMALIZE = 1000, // 00.001 seconds in a millisecond, flipped due to the .1 inaccuracy rule 

     // Date.now() is in milliseconds so divide by 1000, to get client_time in seconds 
     // this way client time and server time have the same units for comparison 
     // this is UTC time 
     client_time = Math.round(Date.now()/NORMALIZE), 
     rounded_time, 
     elapsed_time, 
     string = ''; 

    // here we ensure we never get a negative elapsed time 
    // because clients are not synched to the server 
    // in the case of negative elapsed time, the server is ahead of the client 
    // and we will jus say "just a second ago" 
    if (client_time < server_time) { 
     client_time = server_time; 
    } 
    elapsed_time = (client_time - server_time); 

    // create the output string 
    if (elapsed_time === 0) { 
     string = ' just a second ago'; 

    // 0 to 1 minute ago 
    } else if ((elapsed_time > 0) && (elapsed_time < MINUTE)) { 
     string = (elapsed_time === 1) ? 'one second ago' : 
       (elapsed_time + ' seconds ago'); 

    // 1 minute to 1 hour ago 
    } else if ((elapsed_time >= MINUTE) && (elapsed_time < HOUR)) { 
     rounded_time = Math.floor(elapsed_time/MINUTE); 
     string = (rounded_time === 1) ? 'one minute ago' : 
       (rounded_time + ' minutes ago'); 

    // 1 hour to to 1 day ago 
    } else if ((elapsed_time >= HOUR) && (elapsed_time < DAY)) { 
     rounded_time = Math.floor(elapsed_time/HOUR); 
     string = (rounded_time === 1) ? 'one hour ago' : 
       (rounded_time + ' hours ago'); 

    // more than 1 day ago 
    } else if ((elapsed_time >= DAY)) { 
     rounded_time = new Date(server_time * NORMALIZE); 
     string = 'on ' + rounded_time.toLocaleDateString(); 
    } 
    return string; 
}; 

Кроме того, вы можете подключить ваш формат выше ваш вопрос в конструктор, чтобы получить нормированную временную метку - var d2 = new Date("28 Oct 2015 13:15:00") и, наконец, применить d2.valueOf(), чтобы получить метку времени Unix. Вы также можете принять разницу в датах (d2 - d1).

Использование этой информации. вы должны быть способны достичь того, что вам нужно.

+0

Имейте в виду ... http://english.stackexchange.com/questions/88485/proper-timezone-acronym-usage-pt-vs-pdt-or-pst –

1

Вы можете использовать momentjs.

Проверка substract Часть в документах.

+0

Hi Y galbel, Я новичок в JS , Можете ли вы объяснить, как moment.js может служить цели в моем случае? Большое спасибо заранее –

+0

Проверьте этот ответ http://stackoverflow.com/a/37092950/1543596 – Ygalbel

 Смежные вопросы

  • Нет связанных вопросов^_^