Javascript 计算两个日期之间的差值
我试过这样做Javascript 计算两个日期之间的差值,javascript,date,Javascript,Date,我试过这样做 <script type="text/javascript"> var date2=02/09/2009; var date1=03/12/2009; var diff = date1.getDate()-date2.getDate(); alert (diff); </script> 编辑2:它也不起作用… <script type="text/javascript"> var date2=
<script type="text/javascript">
var date2=02/09/2009;
var date1=03/12/2009;
var diff = date1.getDate()-date2.getDate();
alert (diff);
</script>
编辑2:它也不起作用…
<script type="text/javascript">
var date2= new Date ("02/09/2009");
var date1= new Date ("04/09/2009");
var diff = date1.getDate()-date2.getDate();
alert (diff);
</script>
<script type="text/javascript">
var date2= "02/09/2009";
var date1= "04/09/2009";
var diff2 = new Date(Date.parse("03/12/2009")-
Date.parse("02/09/2009")).toLocaleDateString();
var date2=“2009年9月2日”;
var date1=“04/09/2009”;
var diff2=新日期(日期解析(“03/12/2009”)-
Date.parse(“2009年9月2日”).toLocaleDateString();
//var new_date=新日期(1970年1月1日);
//var diff3=diff2.getDate();
警报(diff2)
解释了如何在javascript中查找两个日期之间的差异
diff.setTime(Math.abs(date1.getTime() - date2.getTime()));
timediff = diff.getTime();
weeks = Math.floor(timediff / (1000 * 60 * 60 * 24 * 7));
timediff -= weeks * (1000 * 60 * 60 * 24 * 7);
days = Math.floor(timediff / (1000 * 60 * 60 * 24));
timediff -= days * (1000 * 60 * 60 * 24);
hours = Math.floor(timediff / (1000 * 60 * 60));
timediff -= hours * (1000 * 60 * 60);
mins = Math.floor(timediff / (1000 * 60));
timediff -= mins * (1000 * 60);
secs = Math.floor(timediff / 1000);
timediff -= secs * 1000;
alert(weeks + " weeks, " + days + " days, " + hours + " hours, " + mins + " minutes, and " + secs + " seconds");
<script type="text/javascript">
function daysFromString(dateString)
{
// split strings at / and return array
var splittedString = dateString.split("/");
// make a new date. Caveat: Months are 0-based in JS
var newDate = new Date(parseInt(splittedString[2], 10), parseInt(splittedString[0], 10)-1, parseInt(splittedString[1], 10));
// returns days since jan 1 1970
return Math.round(newDate.getTime() / (24*3600*1000));
}
var dateString2 = "02/09/2009";
var dateString1= "03/12/2009";
var dateDays1 = daysFromString(dateString1);
var dateDays2 = daysFromString(dateString2);
var diff = dateDays1 - dateDays2;
alert (diff);
</script>
函数daysFromString(日期字符串)
{
//在/和返回数组处拆分字符串
var splittedString=dateString.split(“/”);
//创建一个新日期。注意:在JS中,月份是以0为基础的
var newDate=新日期(parseInt(splittedString[2],10),parseInt(splittedString[0],10)-1,parseInt(splittedString[1],10));
//返回自1970年1月1日起的天数
返回Math.round(newDate.getTime()/(24*3600*1000));
}
var dateString2=“2009年9月2日”;
var dateString1=“03/12/2009”;
var dateDays1=daysFromString(dateString1);
var dateDays2=daysFromString(dateString2);
var diff=dateDays1-dateDays2;
警报(差异);
getDate
是Date
对象的一种方法。正如任何文档明确指出的那样,它返回的日期范围为0到31。如果不是同一个月,尝试从另一个中减去一个是没有意义的。使用Date.parse(date1)-Date.parse(date2)date2=02/09/2009不被视为日期。它是这样工作的。首先,它划分为02/09,返回0.22222,然后除以2009(0.22222/2009)。最后您得到了一个结果date2=0.00011063510314695。与计算date1的结果的方式相同
这不是一个有效的操作。如果您想定义日期。确保以正确的日期格式放置数据
使用new Date()或Date.parse(“02/09/2009”)
编辑:
new Date(Date.parse("03/12/2009")-Date.parse("02/09/2009")).toLocaleDateString() Or
new Date(date1- date2).toLocaleDateString()
那不管用吗
编辑:
<script type="text/javascript">
var date2= new Date ("02/09/2009");
var date1= new Date ("04/09/2009");
var diff = date1.getDate()-date2.getDate();
alert (diff);
</script>
<script type="text/javascript">
var date2= "02/09/2009";
var date1= "04/09/2009";
var diff2 = new Date(Date.parse("03/12/2009")-
Date.parse("02/09/2009")).toLocaleDateString();
也许这行得通。。你能试试这个吗
Date.parse("03/12/2009")-Date.parse("02/09/2009") / (24*60*60*1000)
它会在31天内返回
这似乎对我有用。。但在我的时区,2009年12月3日是2009年第3个月第11天
(24*60*60*1000)=每天的毫秒数
<script type="text/javascript">
function GetD()
{
var date1 = new Date ( 2009 , 09 , 02 );
var date2 = new Date ( 2009 , 12 , 03 );
var diff = days_between (date1,date2);
alert ( diff );
}
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);
}
</script>
函数GetD()
{
var date1=新日期(2009年9月2日);
var date2=新日期(2009年12月3日);
var diff=日期1和日期2之间的天数;
警报(差异);
}
功能日之间(日期1、日期2){
//一天中的毫秒数
var一天=1000*60*60*24;
//将两个日期转换为毫秒
var date1_ms=date1.getTime();
var date2_ms=date2.getTime();
//以毫秒为单位计算差值
var差分=Math.abs(date1-date2);
//返回到天并返回
返回数学圆(差分毫秒/一天);
}
是。
必须使用日期对象,如下所示
var d = new Date(2009,9,19); //19th october, months are 0-based
var d2 = new Date(2009,10,12);
var diff = (d2 - d)/60000; //diff in minutes
alert(diff / 24); //difference in hours
试试看
它将以毫秒为单位显示日期之间的差异。将这个数字除以86400000,差额将以天为单位。谢谢各位,我只回答问题,如果用户以这种形式输入,我如何才能找到差额?这里有人建议使用新日期('02/09/2009')?为什么你希望它能起作用?但我们的客户要求并给予这样的。。。所以我需要解决这个问题的方法:-(然后解析字符串,将字符串中的值提取为数字。提示:查看函数string.split()和parseInt()谢谢你这么做。@krish-我刚刚更新了我的ans。看看吧…它可能有用。它对我有用。确保date1和date2是字符串,而不是像这样显示1970年2月1日。我只是不想有天的不同。你不觉得把时差设置到另一个日期对象有点多余吗?date1.getTime()-date2.getTime()无论如何都将以毫秒为单位返回差值。您需要使用parseInt指定基数10。如果您不这样做,则说明它无法正确处理“08”和“09”之类的内容。而且您忘记了夏令时。@Robert L:感谢这两个建议,我相应地编辑了我的答案。您忘记了:JavaScript月份编号被1禁用。
var diff2 = Date.parse("03/12/2009") - Date.parse("02/09/2009");