유사한 기능을 구현하려면 JS를 사용하면 됩니다.
1. 자바스크립트 함수 구현:
예시 1:
얻은 시간 형식이 타임스탬프가 아닌 경우 다음 JavaScript 함수를 사용하여 문자열을 타임스탬프로 변환할 수 있습니다. 이 함수의 기능은 JS 버전의 strtotime과 동일합니다.
jQuery(" span.timeago ").timeago();
플러그인 소스 코드:
(function (factory) {
if (typeof 정의 === 'function' && 정의.amd) {
// AMD. 익명 모듈로 등록합니다.
정의([ 'jquery'], Factory);
} else {
// 브라우저 전역
Factory(jQuery);
}
}(함수 ($) {
$.timeago = function(timestamp) {
if (타임스탬프 인스턴스of Date) {
return inWords(timestamp);
} else if (typeof timestamp === "string") {
return inWords($.timeago .parse(타임스탬프));
} else if (타임스탬프 유형 === "숫자") {
return inWords(새 날짜(타임스탬프));
} else {
return inWords($ .timeago.datetime(timestamp));
}
};
var $t = $.timeago;
$.extend($.timeago, {
설정: {
refreshMillis: 60000,
allowFuture: false,
localeTitle: false,
cutoff: 0,
문자열: {
Ago: null, FromNow: null,
suffixAgo: "前",
suffixFromNow: "지금부터",
초: "1分钟",
분: "1分钟",
분: "%d分钟",
시: "1소기",
시: "%d소기",
일: "1천",
일: "%d천",
월: "1월",
개월: "%d月",
년: "1년",
년: "%d年",
wordSeparator: "",
숫자: []
}
},
inWords: function(distanceMillis) {
var $l = this.settings.strings;
var prefix = $l.prefixAgo;
var suffix = $l.suffixAgo ;
if (this.settings.allowFuture) {
if (distanceMillis < 0) {
접두사 = $l.prefixFromNow;
접미사 = $l.suffixFromNow;
}
}
var 초 = Math.abs(distanceMillis) / 100 0;
var 분 = 초 / 60;
var 시간 = 분 / 60;
var 일 = 시간 / 24;
var 년 = 일 / 365;
함수 대체(stringOrFunction, 번호) {
var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
var value = ($l.numbers && $l.numbers[number]) || number;
return string.replace(/%d/i, value);
}
var 단어 = 초 < 45 && 대체($l.초, Math.round(초)) ||
초 < 90 && 대체($l.분, 1) ||
분 < 45 && 대입($l.분, Math.round(분)) ||
분 < 90 && 대체($l.시간, 1) ||
시간 < 24 && 대입($l.hours, Math.round(hours)) ||
시간 < 42 && 대체($l.day, 1) ||
일 < 30 && 대체($l.days, Math.round(days)) ||
일 < 45 && 대체($l.월, 1) ||
일 < 365 && 대체($l.개월, Math.round(일 / 30)) ||
년 < 1.5 && 대체($l.연도, 1) ||
대체($l.년, Math.round(년));
var 구분 기호 = $l.wordSeparator || "";
if ($l.wordSeparator === 정의되지 않음) { 구분 기호 = " "; }
return $.trim([접두사, 단어, 접미사].join(구분 기호));
},
구문 분석: function(iso8601) {
var s = $.trim(iso8601) ;
s = s.replace(/.d /,""); // 밀리초 제거
s = s.replace(/-/,"/").replace(/-/,"/");
s = s.replace(/T/," "). 교체(/Z/," UTC");
s = s.replace(/([ -]dd):?(dd)/," $1$2"); // -04:00 -> -0400
새 날짜 반환;
},
datetime: function(elem) {
var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
return $t.parse(iso8601);
},
isTime: function(elem) {
// jQuery의 `is()`는 IE의 HTML5에서 제대로 작동하지 않습니다
return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
}
});
// $(el).timeago('action') // 작업이 제공되지 않으면 init가 기본값입니다
// 단일 요소의 컨텍스트로 함수가 호출됩니다.
var function = {
init: function(){
var Refresh_el = $. 프록시(새로 고침, this);
새로 고침_el();
var $s = $t.settings;
if ($s.refreshMillis > 0) {
setInterval(refresh_el, $s. RefreshMillis);
}
},
업데이트: function(time){
$(this).data('timeago', { datetime: $t.parse(time) });
새로고침.apply(this);
},
updateFromDOM: function(){
$(this).data('timeago', { datetime: $t.parse( $t.isTime( this) ? $(this).attr("datetime") : $(this).attr("title") ) });
새로고침.apply(this);
}
};
$.fn.timeago = 함수(액션, 옵션) {
var fn = 액션 ? function[action] : function.init;
if(!fn){
throw new Error("Unknown function name '" action "' for timeago");
}
// 각각 끝 여기에 개체를 지정하고 요청된 함수를 호출합니다
this.each(function(){
fn.call(this, options);
});
return this;
};
함수 새로 고침() {
var data = prepareData(this);
var $s = $t.settings;
if (!isNaN(data.datetime)) {
if ( $s.cutoff == 0 || distance(data.datetime) < $s.cutoff) {
$(this).text(inWords(data.datetime));
}
}
return this;
}
function prepareData(element) {
element = $(element);
if (!element.data("timeago")) {
element.data("timeago", { 날짜시간: $t.datetime(element) });
var text = $.trim(element.text());
if ($t.settings.localeTitle) {
element.attr("title", element.data('timeago' ).datetime.toLocaleString());
} else if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
element.attr ("title", text);
}
}
return element.data("timeago");
}
function inWords(date) {
return $ t.inWords(거리(날짜));
}
함수 거리(날짜) {
return (new Date().getTime() - date.getTime());
}
// IE6 문제 수정
document.createElement("abbr");
document.createElement("time");
}));