`
langzhiwang888
  • 浏览: 182104 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

javascript计算两个日期之间的天数

 
阅读更多

今天在项目中需用计算一下两个日期之间的间隔数,比如2012-08-10至2012-08-10是之间间隔一天,如果是2012-06-29至2012-07-01就是三天,这个之前写的js方法中出现了一个bug,也就是 2012-06-29至2012-07-01 计算成了4天,实际只有3天,下面贴一下之前的那个js方法:

  1. //计算两个日期的时间间隔 
  2.         function compareDate(start,end){ 
  3.             if(start==null||start.length==0||end==null||end.length==0){ 
  4.                 return 0; 
  5.             } 
  6.              
  7.             var arr=start.split("-");  
  8.             var starttime=new Date(arr[0],arr[1],arr[2]);  
  9.             var starttimes=starttime.getTime(); 
  10.              
  11.             var arrs=end.split("-");  
  12.             var endtime=new Date(arrs[0],arrs[1],arrs[2]);  
  13.             var endtimes=endtime.getTime(); 
  14.              
  15.             var intervalTime = endtimes-starttimes;//两个日期相差的毫秒数 一天86400000毫秒 
  16.             var Inter_Days = ((intervalTime).toFixed(2)/86400000)+1;//加1,是让同一天的两个日期返回一天 
  17.              
  18.             return Inter_Days; 
  19.         } 

这个方法写好了,但是没有做好特殊情况的测试,也就是2012-06-28至2012-07-01 计算成了4天,实际是3天的,6月29日、6月30日、7月1日这三天,如果2月份的天数,这个方法也默认当月是31天,所以这个方法不适用。

后上网查了一下,date的getTime()方法:

js日期的Month是0~11,表示1~12月
你用new Date(2012,6,1,11,41)得到的不是6月1日,而是7月1日的11:41
用new Date(2012,5,31,15,35)得到的不是5月31日,而是7月1日的15:35。因为6月没有31日,所以系统会转成这个。
要把Month减1去构造Date对象才能得到正确是日期,也就是
a='2012-5-31 15:35:00'
b='2012-6-1 11:41:00'
var a= new Date(theYear,theMonth-1,theDay,theHour,theMinute).getTime(); //选择的时间
var b= new Date(Year,Month-1,Day,Hour,Minute).getTime(); //现在的时间

知道这一点,其实也知道哪里出错啦!

改为下面后方法就正常了!

  1. //计算两个日期的时间间隔 
  2.         function compareDate(start,end){ 
  3.             if(start==null||start.length==0||end==null||end.length==0){ 
  4.                 return 0; 
  5.             } 
  6.              
  7.             var arr=start.split("-");  
  8.             var starttime=new Date(arr[0],parseInt(arr[1]-1),arr[2]);  
  9.             var starttimes=starttime.getTime(); 
  10.              
  11.             var arrs=end.split("-");  
  12.             var endtime=new Date(arrs[0],parseInt(arrs[1]-1),arrs[2]);  
  13.             var endtimes=endtime.getTime(); 
  14.              
  15.             var intervalTime = endtimes-starttimes;//两个日期相差的毫秒数 一天86400000毫秒 
  16.             var Inter_Days = ((intervalTime).toFixed(2)/86400000)+1;//加1,是让同一天的两个日期返回一天 
  17.              
  18.             return Inter_Days; 
  19.         } 

 

ok!程序正常了!其实关于js的时间函数以前也一直用,只不过很多这些方法 我都没去记,我遇到的问题也都是把它们记录下来,但是没有把这些东西记在脑子里,呵呵!下次遇到应该就有印象了,我也觉得没必要把这些东西刻在脑子里,但是如果你的记忆力够好,我也还是建议记一下,我自己的记忆力我觉得没那么好!呵呵!

我上网也找了其他一个方法,好像不会出现我那个问题:

有需要可以参考下!

  1. <HTML>    
  2. <HEAD>    
  3. <TITLE>Calc Days</TITLE>   
  4.  
  5.    
  6. <script language="JavaScript">    
  7. // 计算两个日期的间隔天数    
  8. function Computation(){     
  9.   var aDate, oDate1, oDate2, iDays     
  10.   var sDate1=document.getElementById("date1").value;   //sDate1和sDate2是2008-12-13格式   
  11.   var sDate2=document.getElementById("date2").value;  
  12.   aDate = sDate1.split("-")      
  13.   oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])   //转换为12-13-2008格式      
  14.   aDate = sDate2.split("-")      
  15.   oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])      
  16.   iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 /24)+1;   //把相差的毫秒数转换为天数      
  17.    //alert(iDays);    
  18.   document.getElementById("dateresult").innerText="两个日期相差"+iDays+"天"; 
  19.    
  20.       
  21. }    
  22. </script>    
  23.    
  24. </HEAD>    
  25.    
  26. <BODY> 
  27. <label>Date1:</label> 
  28. <input type="text" id="date1" value="2012-02-28"/> 
  29. <label>Date2:</label> 
  30. <input type="text" id="date2" value="2012-03-01"/> 
  31. <br/> 
  32. <input type="button" value="计算相差天数" onclick="Computation()" /> 
  33. <p id="dateresult" style="font:'40';color:'#FF8000'">两个日期相差:</p>   
  34.    
  35. </BODY>    
  36. </HTML>   

 javascript计算两个日期之间的天数

分享到:
评论

相关推荐

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

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

    两个时间间隔的天数

    这段代码提供了一个JavaScript函数 `functionDateDiff`,用于计算两个日期字符串之间相隔的天数。 #### 函数解析 - **参数**: - `sDate1`:表示起始日期的字符串。 - `sDate2`:表示结束日期的字符串。 - 这两...

    JS 获得两个时间间隔天数

    总的来说,JavaScript中的日期操作是通过Date对象完成的,通过计算两个日期之间的毫秒差并进行转换,我们可以轻松地获取两个日期之间的天数差。这对于开发涉及到日期和时间的Web应用是非常有用的。

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

    在编程和数据分析中,计算两个日期之间的差值是一项常见的任务,...了解以上概念后,你可以根据具体需求选择合适的编程语言或工具来计算两个日期之间的天数。无论是开发应用程序还是进行数据处理,这个功能都极其实用。

    js计算两个时间之间天数差的实例代码

    在这篇关于JavaScript计算两个日期之间天数差的文章中,提到了几个关键知识点,包括如何编写代码以判断闰年、如何验证两个日期的先后顺序、如何计算两个日期之间的天数差,以及如何处理日期格式和闰年情况对天数计算...

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

    本文主要讲解了如何使用JavaScript计算两个日期之间的天数差以及如何计算从某一特定日期开始后的第N天是哪一天。接下来,我们将详细探讨这些知识点。 首先,我们需要了解JavaScript中日期对象(Date)的使用方法。...

    计算2个日期之间的天数

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

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

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

    计算两天之间的天数.rar

    以上代码示例展示了在Python、Java和JavaScript中计算两个日期之间天数差的基本方法。无论使用哪种语言,关键在于将日期字符串转换为日期对象,然后计算两个日期对象之间的差值。在Python和Java中,可以直接计算日期...

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

    天数计算通常用于计算两个日期之间相差的天数,也可以用来计算当前日期距离某个特定日期还有多少天。例如,如果你有一个计划,需要在30天后执行,你可以这样计算剩余天数: ```python import datetime today = ...

    javaScript和java中日期相减得出天数方案

    无论是使用JavaScript还是Java来计算两个日期之间的天数差,核心思想都是将日期转换为毫秒数,然后计算两者之间的差值,最后将毫秒数转换为天数。这两种语言虽然语法有所不同,但实现逻辑非常相似。掌握这种方法对于...

    javascript 取两个日期的差值

    在平常用的应该很多的吧,希望能给你带来帮助...”,我们可以明确地了解到,该文章的主要目的是讲解如何用JavaScript计算两个日期之间的差值。 ### 二、解析提供的代码 #### 2.1 原始代码分析 ```javascript //ʼ...

    计算工作日

    - **计算总天数**:计算两个日期之间的总天数。 - **计算工作日总数**:基于总天数,减去周末天数得到工作日总数。 - **考虑剩余天数**:根据剩余天数进一步调整工作日总数。 - **排除节假日**:遍历节假日数组,...

    计算器(javascript)、计算两日期间隔天数等

    在这个“计算器(javascript)、计算两日期间隔天数等”的主题中,我们将深入探讨如何使用JavaScript实现一个基本的计算器功能以及如何计算两个日期之间的间隔天数。 首先,让我们来看看如何使用JavaScript构建一个...

    JavaScript天数计算

    通过使用`Date`对象,可以执行诸如获取当前时间、设置特定日期、计算两个日期之间的差异等操作。 #### 创建日期对象 1. **构造函数**: `new Date()`或`new Date(year, month, day, hours, minutes, seconds, ...

    两个日期之间的天数

    在编程和数据分析中,计算两个日期之间的天数是一项常见的任务,尤其在日程管理、时间序列分析或统计报告中。这个需求通常涉及到日期处理和时间运算。以下将详细讲解如何在不同的编程语言中实现这一功能。 1. **...

    javascript比较两个日期相差天数的方法

    在JavaScript中,比较两个日期相差天数的方法涉及到几个重要的概念,包括日期对象的创建、日期字符串的格式化转换、以及如何计算两个日期对象之间的时间差。以下详细介绍这些知识点。 首先,JavaScript中处理日期和...

    js计算两个日期相差几周

    ### JavaScript 计算两个日期相差几周的知识点详解 ...通过以上介绍,我们可以看到使用JavaScript计算两个日期相差几周不仅实用而且具有一定的灵活性。希望本文能够帮助你在项目中更好地理解和应用日期处理技术。

    javaScript和java中日期相减得出天数方案.docx

    无论是JavaScript还是Java,计算两个日期之间相差天数的基本原理都是相似的:先将日期转换为统一的时间单位(通常是毫秒),然后计算两个时间单位之间的差值,并将其转换为所需的单位(如天)。在实际开发中,还需要...

Global site tag (gtag.js) - Google Analytics