我一直在编写这个脚本来获取两个日期之间的差异。但时间会让脚本变得困惑( http://jsfiddle.net/HuGvd/ )。
当脚本在同一天进入新的月份时,脚本将停止正常工作。我也尝试过在这个脚本中添加几分钟,但不幸的是,我确实需要帮助。
function getDateDiff(timestamp) {
if (null === timestamp || timestamp === "" || timestamp === "undefined") return "?";
var splitDate = ((timestamp.toString().split('T'))[0]).split('-');
var splitTime = ((timestamp.toString().split('T'))[1]).split(':');
var d1 = new Date();
var d1Y = d1.getFullYear();
var d2Y = parseInt(splitDate[0], 10);
var d1M = d1.getMonth() + 1;
var d2M = parseInt(splitDate[1], 10);
var d1D = d1.getDate();
var d2D = parseInt(splitDate[2], 10);
var d1H = d1.getHours();
var d2H = parseInt(splitTime[0], 10);
var diffInHours = (d1H + 24 * d1D + 30) - (d2H + 24 * d2D + 30);
if (diffInHours < 24) return diffInHours + " hour";
var diffInDays = (d1D + 30 * d1M + 12) - (d2D + 30 * d2M + 12);
if (diffInDays < 7) return diffInDays + " days";
else if (diffInDays >= 7 && diffInDays < 14) return "1 week";
else if (diffInDays >= 14 && diffInDays < 30) return Math.floor(diffInDays / 7) + " weeks";
var diffInMonths = (d1M + 12 * d1Y) - (d2M + 12 * d2Y);
if (diffInMonths <= 1) return "1 month";
else if (diffInMonths < 12) return diffInMonths + " months";
var diffInYears = Math.floor(diffInMonths / 12);
if (diffInYears <= 1) return "1 year";
else if (diffInYears < 12) return diffInYears + " years";
}
最佳答案
日期/时间功能极其复杂,边缘情况比您可能涵盖的还要多...不要推出自己的解决方案,请使用内置功能。您可以在 JavaScript 中找到两个日期之间的毫秒数,如下所示:
var now = new Date();
var then = new Date(timestamp);
var diffMS = now - then;
从那里,根据您想要的显示方式转换为您想要的任何单位并不太困难。
顺便说一句,这是一个相当常见的问题。我没有看过,但我确信有一个插件或库可以实现这一点。
关于javascript - jquery 日期对象 2 个日期的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304242/