Как заставить 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)
});
});
Я думаю, что 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');
сделанный!