javascript - jquery 日期对象 2 个日期的差异

标签 javascript jquery function datediff

我一直在编写这个脚本来获取两个日期之间的差异。但时间会让脚本变得困惑( 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;    

从那里,根据您想要的显示方式转换为您想要的任何单位并不太困难。

http://jsfiddle.net/AMDXq/

顺便说一句,这是一个相当常见的问题。我没有看过,但我确信有一个插件或库可以实现这一点。

关于javascript - jquery 日期对象 2 个日期的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304242/

相关文章:

c - 将数组中的元素更改为0-C编程

C - 将值返回给 main

c - 获取用户信息函数

javascript - 时间轴上的鱼眼效果

javascript - async.waterfall 仅返回函数数组的 array[0] 索引处的函数结果集 - Node js

javascript - 读取 html 文件并将找到的所有 Javascript 保存到一个文件中的工具?

jquery - margin-left 只向左移动一个元素,而不是整行

javascript - JQuery 将字符串识别为函数动态回调

javascript - 使用 jQuery 通过超链接显示 Div

javascript - 正则表达式匹配纠结的表达式