我正在使用moment.js将时间戳转换为“8分钟前”的可读形式!
我使用setInterval每1秒更新一次代码以动态更新时间,但它根本不起作用。救救我!
代码:
let timer = () => {
let time = document.getElementsByClassName('timeago');
for(let i = 0; i < time.length; i++) {
time[i].innerText = moment(time[i].innerText, "YYYY-MM-DD h:mm:ss").tz("Asia/Kathmandu").fromNow();
}
};
setInterval(timer, 1000);
<span class="timeago">2018-05-15 09:21:00</span>
<script src="https://momentjs.com/downloads/moment.min.js"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data.min.js"></script>
答案 0 :(得分:1)
每次函数运行时,您都会将元素的文本解析为字符串(并告诉moment
根据“YYYY-MM-DD h:mm:ss”解释它)。相反,只保存一次,并在一个间隔内计算它与现在之间的差异。
您还需要让Moment正确格式化。您的元素有09:21:00
但是Moment格式字符串是h:mm:ss
- 在两位数小时的情况下无效。
const timeagoSpan = document.querySelector('.timeago');
const from = moment(timeagoSpan.textContent, "YYYY-MM-DD hh:mm:ss");
let timer = () => {
timeagoSpan.textContent = from.fromNow();
};
timer();
setInterval(timer, 1000);
<span class="timeago">2018-05-14 22:21:00</span>
<script src="https://momentjs.com/downloads/moment.min.js"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data.min.js"></script>