`
wangyanlong0107
  • 浏览: 486710 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

【转】 JS计算日期天数之差

    博客分类:
  • js
 
阅读更多

做项目的时候碰到一个问题,就是要计算2个日期之间的天数之差,于是上网搜索了一下,找到了解决方案,代码如下:

//计算日期之差
function getDays(strDateStart,strDateEnd){
   
var strSeparator = "-"//日期分隔符
   var oDate1;
   
var oDate2;
   
var iDays;
   oDate1
= strDateStart.split(strSeparator);
   oDate2
= strDateEnd.split(strSeparator);
   var strDateS = new Date(oDate1[0] + "-" + oDate1[1] + "-" + oDate1[2]);
   var strDateE = new Date(oDate2[0] + "-" + oDate2[1] + "-" + oDate2[2]);
   iDays = parseInt(Math.abs(strDateS - strDateE ) / 1000 / 60 / 60 /24)//把相差的毫秒数转换为天数
 

   return iDays ;
}

 

注意标红的两句话,也有写作为:

  var strDateS = new Date(oDate1[0] + "/" + oDate1[1] + "/" + oDate1[2]);

  var strDateE = new Date(oDate2[0] + "/" + oDate2[1] + "/" + oDate2[2]);

    因为平时调试页面时都是用的Firefox浏览器,写完上面代码一运行,ok,没有问题,能够正确计算,于是心中窃喜,又一次迅速的解决了一个问题;但是鉴于平时被浏览器兼容性骚扰的死去活来,本人重新将本段js放到IE下运行,没想到悲剧的事情还是发生了,IE浏览器竟然无法正确获取

  var strDateS = new Date(oDate1[0] + "-" + oDate1[1] + "-" + oDate1[2]);

    调试alert(strDateS )出来的竟然是NaN,对象有误,心情一下失落起来,浏览器你就不能让我省点心吗?,无奈,只能翻出JS参考手册,查找Date()对象,查出如下:

  dateObj = new Date();
  dateObj = new Date(dateVal);
  dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]]) ;

    大家有没有发现跟我上面所写代码不一样的地方?对,竟然没有dateObj = new Date(year+"-"+ month+"-"+ date) ;这种创建方式,那火狐是如何执行成功的?瞬间我就对火狐的强大感到“震精”!于是,将代码改为如下:

  var strDateS = new Date(oDate1[0], oDate1[1], oDate1[2]);

  var strDateE = new Date(oDate2[0], oDate2[1] , oDate2[2]);

    Ok,IE和火狐都运行正常!可正当我以为再也没有问题的时候,更大的悲剧悄然而至,当我输入两个2012-02-29和2012-03-01日期时,算出的结果竟然是0天,经过测试,发现只要是跨月的计算,结果总会出错,同月的不会,无奈,再次翻阅JS参考手册,发现JS对month参数的定义如下:

 month
 必选项。表示的月份,是从 0 到 11 之间的整数( 1 月至 12 月)。

  原因终于找到,原来月份是从0开始算的,又犯了一个低级错误,于是修改JS代码如下:

  var strDateS = new Date(oDate1[0], oDate1[1]-1, oDate1[2]);

  var strDateE = new Date(oDate2[0], oDate2[1]-1, oDate2[2]);

   这下完美解决!

分享到:
评论

相关推荐

    kettle中使用js计算两个日期之间的天数.txt

    kettle中使用js计算两个日期之间的天数

    日期计算、倒计时、天数计算

    例如,要计算两个日期之间的天数差,可以这样操作: ```python from datetime import datetime date1 = datetime(2022, 1, 1) date2 = datetime(2023, 12, 31) delta = date2 - date1 print(delta.days) # 输出:...

    JS 获得两个时间间隔天数

    在这个方法中,我们将探讨如何利用JavaScript的内置Date对象以及一些基本的算术运算来计算日期间隔。 首先,我们需要创建两个Date对象,分别表示我们想要比较的两个日期。例如: ```javascript var date1 = new ...

    纯js计算两日期间的天数差demo,兼容IE8

    纯js计算两日期间的天数差demo,直接可用。兼容IE8,火狐,谷歌。,亲测可用

    计算两个日期相隔天数并减去节假日

    计算两个日期相隔天数并减去节假日,这个可以使用在各种需要通知的场景以及工作日提醒等

    计算2个日期之间的天数

    在JavaScript编程语言中,计算两个日期之间的天数是一项常见的任务,尤其在处理时间相关的应用程序时。这个需求可以通过几个简单的步骤来实现,即使对于初学者来说也是相当直观的。以下是一个基本的方法来完成这个...

    计算天数和查询未来天数的软件

    "计算天数和查询未来天数的软件"是一款专门针对这一需求而设计的应用程序,它能够帮助用户轻松计算历史日期之间的天数差,以及预测未来的日期。这类软件在日常生活、工作计划、项目管理、学业追踪等场景中都有广泛的...

    指定两个日期计算相隔的天数

    - 计算日期差时要考虑日期的顺序,因为"日期2 - 日期1"和"日期1 - 日期2"的结果是相反的。 - 跨越闰年和不同月份的天数差异也需要考虑,比如2月29日的情况。 - 在SQL中,`DATEDIFF`函数的结果可能是负数,取决于...

    计算天数精确到分钟.rar

    "计算天数精确到分钟"这个主题涉及到如何在代码中准确地计算日期间隔,并且细化到分钟级别。在不同的编程语言中,都有相应的库和函数来支持这种操作。 在Python中,我们可以使用内置的`datetime`模块来处理日期和...

    js 时间计算(加减天数、返回当前时间后一个星期的日期,返回格式yyyy-MM-dd)

    在JavaScript中,时间计算是日常开发中常见的任务,特别是在处理用户界面交互或者数据处理时。本文将详细讲解如何在JavaScript中进行日期的加减运算,以及如何返回当前时间后一个星期的日期,并确保结果以"yyyy-MM-...

    javaScript 计算两个日期的天数相差(示例代码)

    本篇文章主要介绍了javaScript 计算两个日期的天数相差(示例代码) 需要的朋友可以过来参考下,希望对大家有所帮助

    计算日期相隔的时间,天数,分钟,秒数

    本文将深入探讨如何在各种编程语言中计算日期相隔的时间,包括天数、分钟和秒数,以及时间间隔的计算方法。 首先,让我们理解日期和时间的基本概念。日期通常表示一年中的某一天,而时间则涉及小时、分钟和秒。两者...

    计算日期差

    计算日期差的基本方法是创建两个`datetime`对象,然后用减法操作符`-`来获取它们之间的差值,结果会是一个`timedelta`对象,表示两个日期之间的天数。例如: ```python from datetime import datetime date1 = ...

    js对日期操作

    Date.prototype.isLeapYear 判断闰年 Date.prototype.Format 日期格式化 Date.prototype.DateAdd 日期计算 Date.prototype.DateDiff 比较日期差 Date.prototype.toString 日期转字符串 ...daysBetween 日期天数差

    用javascript实现计算两个日期的间隔天数

    代码如下:// 计算两个日期的间隔天数 function DateDiff(sDate1, sDate2){ //sDate1和sDate2是2002-12-18格式 var aDate, oDate1, oDate2, iDays aDate = sDate1.split(“-“) oDate1 = new Date...

    js 日期 增加 n天

    `js 日期 增加 n天`这个话题涉及到如何使用JavaScript内置的Date对象来修改日期,使其增加或减少指定的天数。下面将详细介绍这个过程,并提供相关的示例代码。 首先,JavaScript中的`Date`对象是用于处理日期和时间...

    带天数日期控件

    "js"文件夹很可能包含了实现日期控件逻辑的JavaScript代码,这部分代码可能包括了日期处理函数、事件监听器以及与天数统计相关的算法。最后,"DatePicker"可能是这个日期控件的组件库,包含了一组预定义的函数和类,...

    JS 请假计算按小时

    选好请假日期和时间后。输出长时间。 var date=new Date(); var dat=document.all.item('a1').value; var a2=document.all.item('a2').value; var year="",y="",y2="",month="",m="",...//计算出请假的前后日期之天数差

    js_阳历日期转农历日期_日期转化周几等

    1 返回农历year年中哪个月是闰月,没有闰月返回0 2 返回农历year年闰月的天数(如果没有闰月则返回0) 3 返回农历year年的总天数 4 返回农历year年month月的天数 ...10 阳历日期转农历日期 11 日期转化周几

    js计算两个日期间的天数月的实例代码

    在上述示例中,我们看到两种不同的方法来计算两个日期之间的天数和月数。 首先,`dateU` 函数是用来计算两个日期之间的月数和天数的。这个函数接受两个日期字符串作为参数,格式为`YYYYMMDD`。它首先提取出年、月、...

Global site tag (gtag.js) - Google Analytics