Как заставить timeago.js показывать только часы назад

Я использую timeago.js, чтобы показать дату. Тем не менее, я хочу показать функцию "часов назад" в плагине, если конкретная дата меньше 2 дней. Если дата больше 2 дней, она будет показывать обычное "3 дня назад".

Спасибо за помощь заранее.

2 ответа

Видимо, я должен изменить плагин. Должны быть установлены "часы", чтобы быть менее 48 часов.

 var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
 hours < 48 && substitute($l.hours, Math.round(hours)) ||

Вы можете, конечно, изменить плагин, как вы сделали, или вы можете запустить даты заново и проверить, больше ли они двух дней или нет - если они есть - просто переписать строку в часы, что-то вроде этого:

$(function(){
    var oneHour = 1*60*60*1000; // one hour in miliseconds
    var twoDays = 2*24*oneHour; // two days in miliseconds

    $('.timeAgoSelector').each(function(){
        $t = $(this);
        var agoDate = new Date( $t.attr('title') ).getTime()
        var currDate = new Date().getTime();
        var timeAgo = currDate - agoDate;
        if( (timeAgo < twoDays) && (timeAgo >= oneHour) ){
            var hours = ((timeAgo/1000)/60)/60;
            hours = Math.floor(hours);
            if( hours < 2 ) $t.html( 'an hour ago' );
                else $t.html( hours + ' hours ago' );
        } //else => do nothing (keep original content)
    });

});

=> http://jsfiddle.net/chgvcudL/

Я думаю, что timeago.js может помочь вам, и крошечная библиотека поддерживается мной.

Вы можете просто настроить свою функцию локали для своих нужд.

const yourLocale = (number, index, totalSec) => {
   // format totalSec into hours.
   const hours = getHours(totalSec);
   return hours +' hours ago';
};

затем register Это.

timeago.register('yourLocale', yourLocale);

Их format используй это.

timeago.format(time, 'yourLocale');

сделанный!

Другие вопросы по тегам