नीचे jQuery के लिए वास्तव में एक अच्छा समय पहले प्लगइन है, जो कि वे SO पर यहां उपयोग किए जाने के समान ही हैं। मेरे लिए समस्या यह है कि यह समय को बदलने के लिए इसका उपयोग करता है।jQuery समय पहले एक टाइमस्टैम्प से?
<time class="timeago" datetime="2008-07-17T09:24:17Z">July 17, 2008</time>
कि यूटीसी टाइमस्टैम्प में और एक स्वरूपित समय नहीं के रूप में अपनी साइट पर है कि मैं दुकान समय को छोड़कर बहुत अच्छा होगा, वहाँ एक रास्ता कुछ इस तरह परिवर्तित करने के लिए एक टाइमस्टैम्प उपयोग करने के लिए है? मैं PHP में जानता हूं कि मैं अपने टाइमस्टैम्प को इस प्रारूप में परिवर्तित कर सकता हूं लेकिन यह PHP में 1 पृष्ठ पर कई बार परिवर्तित करने के साथ ओवरकिल जैसा लगता है। मैं गलत हो सकता हूं, कोई और jquery में लेकिन असली टाइमस्टैम्प से ऐसा करता है?
इसके अलावा मैं वर्तमान में "2 घंटे 4 मिनट पहले" दिखाने के लिए साइट पर PHP में ऐसा करता हूं लेकिन wou7ld PHP के बजाय जावास्क्रिप्ट का उपयोग करना बेहतर होगा?
/*
* timeago: a jQuery plugin, version: 0.8.1 (2010-01-04)
* @requires jQuery v1.2.3 or later
*
* Timeago is a jQuery plugin that makes it easy to support automatically
* updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
*
* For usage and examples, visit:
* http://timeago.yarp.com/
* Copyright (c) 2008-2010, Ryan McGeary (ryanonjavascript -[at]- mcgeary [*dot*] org)
*/
(function($) {
$.timeago = function(timestamp) {
if (timestamp instanceof Date) return inWords(timestamp);
else if (typeof timestamp == "string") return inWords($.timeago.parse(timestamp));
else return inWords($.timeago.datetime(timestamp));
};
var $t = $.timeago;
$.extend($.timeago, {
settings: {
refreshMillis: 60000,
allowFuture: false,
strings: {
prefixAgo: null,
prefixFromNow: null,
suffixAgo: "ago",
suffixFromNow: "from now",
ago: null, // DEPRECATED, use suffixAgo
fromNow: null, // DEPRECATED, use suffixFromNow
seconds: "less than a minute",
minute: "about a minute",
minutes: "%d minutes",
hour: "about an hour",
hours: "about %d hours",
day: "a day",
days: "%d days",
month: "about a month",
months: "%d months",
year: "about a year",
years: "%d years"
}
},
inWords: function(distanceMillis) {
var $l = this.settings.strings;
var prefix = $l.prefixAgo;
var suffix = $l.suffixAgo || $l.ago;
if (this.settings.allowFuture) {
if (distanceMillis < 0) {
prefix = $l.prefixFromNow;
suffix = $l.suffixFromNow || $l.fromNow;
}
distanceMillis = Math.abs(distanceMillis);
}
var seconds = distanceMillis/1000;
var minutes = seconds/60;
var hours = minutes/60;
var days = hours/24;
var years = days/365;
var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
seconds < 90 && substitute($l.minute, 1) ||
minutes < 45 && substitute($l.minutes, Math.round(minutes)) ||
minutes < 90 && substitute($l.hour, 1) ||
hours < 24 && substitute($l.hours, Math.round(hours)) ||
hours < 48 && substitute($l.day, 1) ||
days < 30 && substitute($l.days, Math.floor(days)) ||
days < 60 && substitute($l.month, 1) ||
days < 365 && substitute($l.months, Math.floor(days/30)) ||
years < 2 && substitute($l.year, 1) ||
substitute($l.years, Math.floor(years));
return $.trim([prefix, words, suffix].join(" "));
},
parse: function(iso8601) {
var s = $.trim(iso8601);
s = s.replace(/-/,"/").replace(/-/,"/");
s = s.replace(/T/," ").replace(/Z/," UTC");
s = s.replace(/([\+-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
return new Date(s);
},
datetime: function(elem) {
// jQuery's `is()` doesn't play well with HTML5 in IE
var isTime = $(elem).get(0).tagName.toLowerCase() == 'time'; // $(elem).is('time');
var iso8601 = isTime ? $(elem).attr('datetime') : $(elem).attr('title');
return $t.parse(iso8601);
}
});
$.fn.timeago = function() {
var self = this;
self.each(refresh);
var $s = $t.settings;
if ($s.refreshMillis > 0) {
setInterval(function() { self.each(refresh); }, $s.refreshMillis);
}
return self;
};
function refresh() {
var data = prepareData(this);
if (!isNaN(data.datetime)) {
$(this).text(inWords(data.datetime));
}
return this;
}
function prepareData(element) {
element = $(element);
if (element.data("timeago") === undefined) {
element.data("timeago", { datetime: $t.datetime(element) });
var text = $.trim(element.text());
if (text.length > 0) element.attr("title", text);
}
return element.data("timeago");
}
function inWords(date) {
return $t.inWords(distance(date));
}
function distance(date) {
return (new Date().getTime() - date.getTime());
}
function substitute(stringOrFunction, value) {
var string = $.isFunction(stringOrFunction) ? stringOrFunction(value) : stringOrFunction;
return string.replace(/%d/i, value);
}
// fix for IE6 suckage
document.createElement('abbr');
document.createElement('time');
})(jQuery);
बिल्कुल वही जो मैं धन्यवाद के लिए देख रहा था। –
यह कमाल है, ठीक वही है जो मैं करना चाहता था। साझा करने के लिए धन्यवाद! –
+1 यह किसी अन्य उत्तर से अधिक उल्टा होना चाहिए! –