2 个日期之间的 JavaScript 天返回错误
Javascript days between 2 dates return wrong
一直在尝试解决这个问题一段时间但没有成功,我在这里找到了几个类似的答案,但格式在这里很重要。我需要返回 X 年、X 个月、X 天。
你能不能看看,我在这里做错了什么......天数不太对。
这是一个垃圾箱
function inBetweenDays(y,m,d){
var user_date = new Date(y,m + 1,d);
var today_date = new Date();
var diff_date = (user_date - today_date);
var num_years = diff_date/31536000000;
var num_months = (diff_date % 31536000000)/2628000000;
var num_days = ((diff_date % 31536000000) % 2628000000)/86400000;
var years = Math.floor(Math.abs(num_years));
var months = Math.floor(Math.abs(num_months));
var days = Math.floor(Math.abs(num_days));
if (years >= 1) {
console.log(years + " years " + months + " months " + days + " days");
} else if (years <= 0 && months >= 0){
console.log(months + " months " + days + " days");
} else {
console.log(days + " days ");
}
}
inBetweenDays(2015,03,04);
inBetweenDays(2016,03,04);
inBetweenDays(2016,02,04);
inBetweenDays(2018,02,04);
计算两个日期之间以年、月、日为单位的日历日期差异的算法如下:
-
验证日期是否具有整年(4 位数字(、范围为 1-12 的月份和范围 1 中的月日 - 日期中的天数。
-
从较晚的日期中减去较早的日期。如果需要借用,请将较早日期的月份、较早日期的年份中的天数添加到较晚的日期天数,并将 1 添加到要减去的月份。
从较晚的日期 月份中减去较早的日期月份。如果需要借款,在以后的日月中加 12,在要减去的年份上加 1。
从较晚的日期年份中减去较早的日期年份。
这可能已经在一系列重复问题中的一个现有答案中实现,但尝试在没有算法文档的情况下发现它。借款天数的计算可以计算如下:
function monthDays(y, m) // full year and month in range 1-12
{ var leap = 0;
if( m == 2)
{ if( y % 4 == 0) leap = 1;
if( y % 100 == 0) leap = 0;
if( y % 400 == 0) leap = 1;
}
return [0, 31,28,31,30,31,30,31,31,30,31,30,31][ m] + leap;
}
(编辑(或者根据注释,使用 Date 对象的行为调整为超出预期的界限行为:
function monthDays( y, m)
{ return new Date(y, m, 0).getDate();
}
HTML
<input id="first" value="1/1/2000"/>
<input id="second" value="1/1/2001"/>
<script>
alert(datediff("day", first, second)); // what goes here?
</script>
JavaScript
function parseDate(str) {
var mdy = str.split('/')
return new Date(mdy[2], mdy[0]-1, mdy[1]);
}
function daydiff(first, second) {
return Math.round((second-first)/(1000*60*60*24));
}
源:如何在 JavaScript 中获取两个日期之间的天数?
function days_between(date1, date2) {
// The number of milliseconds in one day
var ONE_DAY = 1000 * 60 * 60 * 24;
// Convert both dates to milliseconds
var date1_ms = date1.getTime();
var date2_ms = date2.getTime();
// Calculate the difference in milliseconds
var difference_ms = Math.abs(date1_ms - date2_ms);
// Convert back to days and return
return Math.round(difference_ms / ONE_DAY);
}
相关文章:
- CKFinder 3为所选文件返回错误的URL
- WebView返回错误的window.innerHeight
- 使用ajax上传的文件返回错误,但使用c#在asp.net的服务器端正常提交的文件
- DreamFactory REST API POST休息/用户/会话请求总是在IE9中返回错误
- sqlite查询返回错误-can'我不知道为什么
- Javascript返回错误的Date值(NodeJS)
- javascript getDate getMonth返回错误的月份
- 函数返回错误'令牌{'
- 为什么我在Cloud9中的http请求总是返回错误
- 当jQuery返回错误时,如何在jQuery中重新发送ajax请求
- ontouchend-ios返回错误的坐标
- node.js mongojs findOne回调返回错误为null
- jQuery Ajax+经典ASP返回错误'意外的输入结束'
- 如果URL's链接返回错误
- 时刻.js时区值返回错误的时间戳
- 简单的jquery不起作用,并返回错误
- 在回调返回错误中带有点的 JSONP
- 在页面发布到服务器并返回错误后保留 javascript 更改
- web2py服务器返回错误,但已提交查询
- Javascript错误-左移位返回错误的输出