js 日期 跨月的计算问题(跨月的话就不对,求高手解答):
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 日期 跨月的计算问题(跨月的话就不对,求高手解答):相关的知识,希望对你有一定的参考价值。
var fArray = rowCostDateFrom.value.split("-");
var sArray = rowCostDateTo.value.split("-");
var fDate = new Date(fArray[0],fArray[1],fArray[2]);
var sDate = new Date(sArray[0],sArray[1],sArray[2]);
var t = Math.abs(fDate.getTime()-sDate.getTime());
var days = t/1000/60/60/24;
if(days+1< rowNumber.value)
window.alert("所填数量超过所选的日期差!");
rowNumber.focus();
return false;
var d2 = new Date(2014, 10, 29);
alert( (d1.getTime() - d2.getTime()) / 60000 /24/60);
这个计算本身在是没有问题的,不管是否跨月。
看你的array的值是否正常, 看 rowNumber.value 是否正确引用到你期望的数字。
非常感谢,
你这方法计算结果是“5”,但是应该6才对,然后6+1=7,实际应该为7天;
我原来的方法也是的,结果是5,不知道问题出现在哪里
第二个参数的month是从0-11的,不是从1-12.
所以上边的代码两个日期之间是没有31日的。
此对象启用日期和时间的基本存储和检索。Date 构造函数有两种形式。
function Date( [dateVal : Number | String | System.DateTime ] )
function Date( year : int, month : int, date : int[, hours : int [, minutes : int [, seconds : int [, ms : int]]]] )
参数
dateVal
可选项。如果是数值,dateVal 以协调通用时间表示指定日期与 1970 年 1 月 1 日午夜之间相差的毫秒数。如果是字符串,则按照 parse 方法中的规则对 dateVal
进行分析。dateVal 也可以是 .NET 日期值。
year
必选。年份全称,如 1976(而不是 76)。
month
必选。月份,用从 0 到 11 的整数表示(1 月至 12 月)。
date
必选。日期,用从 1 到 31 的整数表示。
hours
可选项。如果提供了 minutes 则必须给出该参数。一个指定小时的,从 0 到 23 的整数(午夜到 11pm)。
minutes
可选项。如果提供了 seconds 则必须给出该参数。一个指定分钟的,从 0 到 59 的整数。
seconds
可选项。如果提供了 milliseconds 则必须给出该参数。一个指定秒的,从 0 到 59 的整数。
ms
可选项。一个指定毫秒的,从 0 到 999 的整数。
果然是的,谢谢!非常谢谢!
追答如果解决了,别忘了采纳一下噢。
参考技术A function aa()var date1=new Date(2014,9,10); //开始日期
var date2=new Date(2014,10,10); //结束时间
var date3=date2.getTime()-date1.getTime() //时间差的毫秒数
var days=Math.floor(date3/(24*3600*1000)) //相差的天使
alert(days);
追问
非常感谢,
不过你试下这两个日期:
var date1=new Date(2014,10,31); //开始日期
var date2=new Date(2014,11,01); //结束时间
月份是从0开始的
你的第一个日期是2014年11月31日 没有这一天
计算两个时间相差的天数(支持跨月跨年)
计算两个时间相差的天数(支持跨月、跨年):
/**
* JDK 8计算两个时间相差的天数,支持跨月、跨年
* @param startTimeStamp 开始时间戳
* @param endTimeStamp 结束时间戳
* @return 相距天数,若开始时间大于结束时间,
* 则返回对应复数
*/
public long diffDays(long startTimeStamp,long endTimeStamp)
LocalDate startTime = Instant.ofEpochMilli(startTimeStamp).atZone(ZoneOffset.ofHours(8)).toLocalDate();
LocalDate endTime = Instant.ofEpochMilli(endTimeStamp).atZone(ZoneOffset.ofHours(8)).toLocalDate();
return ChronoUnit.DAYS.between(startTime, endTime);
以上是关于js 日期 跨月的计算问题(跨月的话就不对,求高手解答):的主要内容,如果未能解决你的问题,请参考以下文章