2015-08-08 361 views
0

我正在试着计算两个日期之间的年份和日期。一个例子是“自第二次世界大战以来有多少年和剩余的日子?”。我可以计算出总日数,但我正在努力确保剩余的日数是正确的。我也没有考虑闰年,因为我不知道从哪开始。如何计算出两年之间的日期和剩余天数

http://jsfiddle.net/aw5rvpk0/16/

jQuery的

function parseDate(str) { 
    var mdy = str.split('/') 
    return new Date(mdy[2], mdy[0]-1, mdy[1]); 
} 

function daydiff(first, second) { 
    return (second-first)/(1000*60*60*24); 
} 

var totalDayCount = Math.round((daydiff(parseDate($('#first').val()), parseDate($('#second').val())))); 

var yearCount = Math.round((totalDayCount/365) * 10)/10; 

var dayCountMinusYears = Math.round((totalDayCount - (yearCount * 365))); 

$('.years').text(yearCount); 
$('.days').text(dayCountMinusYears); 

HTML

<input id="first" value="1/1/2000"/> 
<input id="second" value="6/10/2005"/> 

<div>Year Count <span class="years">0</span></div> 
<div>Day Count Minus The Years Count <span class="days">0</span></div> 

回答

1

尝试利用.getTime()String.prototype.split().toFixed()

var inputs = $("input"); 
 
var then = new Date(inputs.eq(0).val()).getTime(); 
 
var now = new Date(inputs.eq(1).val()).getTime(); 
 
var years = ((now - then)/86400000/365).toFixed(2); 
 
$(".years").text(years.split(".")[0]); 
 
$(".days").text(365 * Number("." + years.split(".")[1]));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 
<input id="first" value="1/1/2000"/> 
 
<input id="second" value="6/10/2005"/> 
 

 
<div>Year Count <span class="years">0</span></div> 
 
<div>Day Count Minus The Years Count <span class="days">0</span></div>

的jsfiddle http://jsfiddle.net/aw5rvpk0/17/


编辑,更新

这工作,但我在英国我,所以我需要转换的日期格式 一旦被存储在变量。那可能吗?

尝试转换input为 “DD/MM/YY” 格式利用String.prototype.split()Array.prototype.slice()Array.prototype.reverse()Array.prototype.join()String.prototype.concat()

var inputs = $("input"); 
 
var then = inputs.eq(0).val(); 
 
then = new Date(then.split("/").slice(0,2).reverse() 
 
       .join("/").concat("/" + then.slice(-4))).getTime(); 
 
var now = inputs.eq(1).val(); 
 
now = new Date(now.split("/").slice(0,2).reverse() 
 
       .join("/").concat("/" + now.slice(-4))).getTime(); 
 
console.log(then, now) 
 
var years = ((now - then)/86400000/365).toFixed(5); 
 
$(".years").text(years.split(".")[0]); 
 
$(".days").text(365 * Number("." + years.split(".")[1]));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input id="first" value="30/01/2000"/> 
 
<input id="second" value="31/01/2001"/> 
 

 
<div>Year Count <span class="years">0</span></div> 
 
<div>Day Count Minus The Years Count <span class="days">0</span></div>

的jsfiddle http://jsfiddle.net/aw5rvpk0/36/

+0

不似乎工作1或2天,但我不明白为什么 – 2ne

+0

_“这似乎不工作1或2天,但我不明白为什么”_不一定解释正确?什么是“似乎没有工作1或2天”?可以创建stacksnippets,jsfiddle http://jsfiddle.net来演示吗? – guest271314

+0

对不起,这是一个更新jsfiddle,它正在寻找1天之间的几天和几天http://jsfiddle.net/aw5rvpk0/32/ – 2ne