Tôi đang tạo bộ đếm javascript đếm' giây trước '. Tôi có thời gian của tôi trong một đối tượng JS thời gian, và tôi tìm thấy một đoạn mã chức năng "thời gian khác biệt" ở đây trên tràn ngăn xếp, nhưng nó hiển thị "2 giờ trước". Làm cách nào tôi có thể hiển thị "5 giờ, 10 phút và 37 giây trước".Thời gian mờ Javascript (ví dụ: '10 phút trước ') đó là trong giây chính xác
Dưới đây là những gì tôi đang làm việc với:
Chức năng này chuyển đổi thời gian hiện tại và dấu thời gian của một cái gì đó vào "20 giây" thay vì một ngày khó hiểu:
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';
}
}
Và đây là những gì tôi đang sử dụng để "đếm lên" thời gian mỗi giây. Tôi muốn nó để nói "5 giờ, 3 phút, 10 giây" và sau đó 1 giây sau, "5 giờ, 3 phút, 11 giây"
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)
Các newTime biến là thời gian trong Định dạng ngày javascript UTC. relTime là ở định dạng "giây trước". Khoảng thời gian lặp lại thông qua một loạt các yếu tố dấu thời gian và chọn một phần tử phù hợp cho từng dấu thời gian. Sau đó, nó thêm một giây để thời gian, chuyển đổi nó trở lại vào "thời gian mờ" (giây trước), thay thế html với thời gian mới và ghi lại nó trong giao diện điều khiển.
Làm cách nào để thay đổi "5 giờ trước" thành "5 giờ, 37 phút, 10 giây trước"? Chức năng chênh lệch thời gian cần được sửa đổi.
Tại sao bạn lại khai báo 'var relTime' bên trong setInterval? – ErikE
P.S. Tôi sẽ sử dụng một phương pháp rất khác nhau để tìm đúng mục html. Phải có một thẻ dữ liệu- [cái gì đó] bạn có thể thêm vào mỗi thẻ có thể tương ứng với dấu thời gian thích hợp với đúng html. – ErikE
@ErikE Tôi phải khai báo relTime một lần nữa nếu không nó sẽ luôn có giá trị ban đầu. Và cách sử dụng .attr ('datasomething') tốt hơn .html()? – alt