मैं एक जावास्क्रिप्ट काउंटर बना रहा हूं जो 'सेकंड पहले' की गणना करता है। मेरे पास जेएस टाइम ऑब्जेक्ट में मेरा समय है, और मुझे स्टैक ओवरफ़्लो पर "टाइम फर्क" फ़ंक्शन स्निपेट मिला, लेकिन यह "2 घंटे पहले" प्रदर्शित करता है। मैं इसे "5 घंटे, 10 मिनट और 37 सेकंड पहले प्रदर्शित करने के लिए कैसे प्राप्त कर सकता हूं।"जावास्क्रिप्ट अस्पष्ट समय (जैसे '10 मिनट पहले') जो सटीक सेकंड में है
इस समारोह में "20 सेकंड पहले" वर्तमान समय और कुछ की टाइमस्टैम्प धर्मान्तरित एक गुप्त तारीख के बजाय:
यहाँ मैं के साथ काम कर रहा हूँ है
function timeDifference(current, previous) {
var msPerMinute = 60 * 1000;
var msPerHour = msPerMinute * 60;
var msPerDay = msPerHour * 24;
var msPerMonth = msPerDay * 30;
var msPerYear = msPerDay * 365;
var elapsed = current - previous;
if (elapsed < msPerMinute) {
return Math.round(elapsed/1000) + ' seconds ago';
} else if (elapsed < msPerHour) {
return Math.round(elapsed/msPerMinute) + ' minutes ago';
} else if (elapsed < msPerDay) {
return Math.round(elapsed/msPerHour) + ' hours ago';
} else if (elapsed < msPerMonth) {
return 'approximately ' + Math.round(elapsed/msPerDay) + ' days ago';
} else if (elapsed < msPerYear) {
return 'approximately ' + Math.round(elapsed/msPerMonth) + ' months ago';
} else {
return 'approximately ' + Math.round(elapsed/msPerYear) + ' years ago';
}
}
और यहाँ क्या मैं मैं प्रत्येक सेकंड के समय "गिनती" करने के लिए उपयोग कर रहा हूँ। मैं यह कहने के लिए "5 घंटे, 3 मिनट, 10 सेकंड पहले" और चाहते हैं तो 1 सेकंड बाद में, "5 घंटे, 3 मिनट, 11 सेकंड पहले"
var newTime = new Date(data.popular[i].timestamp*1000)
var relTime = timeDifference(new Date(),newTime)
setInterval(function(){
var theTimeEl = $('.timestamp-large').filter(function(){
return $(this).html() == relTime
});
newTime.setSeconds(newTime.getSeconds() + 1);
var relTime = timeDifference(new Date(), newTime);
$(theTimeEl).html(relTime);
console.log(relTime)
}, 1000)
चर Newtime में समय आ गया है यूटीसी जावास्क्रिप्ट दिनांक प्रारूप। relTime है कि "सेकंड पहले" प्रारूप में। अंतराल टाइमस्टैम्प तत्वों के गुच्छा के माध्यम से loops और हर बार टिकट के लिए सही चुनता है। फिर यह उस समय एक सेकंड जोड़ता है, इसे वापस "अस्पष्ट समय" (सेकेंड पहले) में परिवर्तित करता है, एचटीएमएल को नए समय के साथ बदलता है और इसे कंसोल में लॉग करता है।
मैं "5 घंटे पहले" 5 घंटे, 37 मिनट, 10 सेकंड पहले "कैसे बदलूं? समय अंतर समारोह को संशोधित करने की आवश्यकता है।
आप सेट इंटरवल के अंदर 'var relTime' को फिर से घोषित क्यों कर रहे हैं? – ErikE
पीएस मैं सही एचटीएमएल आइटम खोजने के लिए एक बहुत ही अलग विधि का उपयोग करूंगा। एक डेटा होना चाहिए- [कुछ] टैग जिसे आप प्रत्येक में जोड़ सकते हैं जो सही HTML के साथ उचित टाइमस्टैम्प से संबंधित हो सकता है। – ErikE
@ErikE मुझे फिर से रिटाइम घोषित करना है या फिर यह हमेशा प्रारंभिक मूल्य होगा। और .attr ('datasomething') का उपयोग कैसे कर रहा है .html() से बेहतर है? – alt