簡體   English   中英

Javascript將當前時間轉換為timeago

[英]Javascript convert current time to timeago

我一直在嘗試將當前時間轉換為timeago,例如facebook和twitter(2分鍾前,30秒前)。 為此,我正在考慮當前時間,並借助將其轉換為大約時間的功能。 代碼如下:

 var current = new Date(); console.log(timeDifference(current, new Date(2018, 03, 27, 10, 30, 00, 00))); console.log(timeDifference(current, new Date(2018, 03, 27, 10, 00, 00, 00))); 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'; } } 

但是,它無法正常工作,我似乎不知道為什么?

您的月份減少一(以0為基數)。 (當然,根據時區可能仍會返回錯誤結果。)

 var current = new Date(); console.log(timeDifference(current, new Date(2018, 02, 27, 10, 30, 00, 00))); console.log(timeDifference(current, new Date(2018, 02, 27, 10, 00, 00, 00))); 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'; } } 

問題出在您的測試中,因為月份從0開始。

console.log(timeDifference(current, new Date(2018, 03, 27, 10, 30, 00, 00)));
console.log(timeDifference(current, new Date(2018, 03, 27, 10, 00, 00, 00)));

console.log(timeDifference(current, new Date(2018, 02, 27, 10, 30, 00, 00)));
console.log(timeDifference(current, new Date(2018, 02, 27, 10, 00, 00, 00)));

並且您的代碼可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM