[英]Calculating the difference between two dates
我試過這樣的
<script type="text/javascript">
var date2=02/09/2009;
var date1=03/12/2009;
var diff = date1.getDate()-date2.getDate();
alert (diff);
</script>
但它不起作用,是因為getDate
僅適用於Date
嗎?
如何找到這兩個日期之間的差異? 我無法使用此功能,因為我在salesforce CRM apex頁面中添加了javascript?
編輯1:事實上這也不起作用
<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>
編輯2:它不能正常工作......
<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 new_date = new Date(1970,01,01); // var diff3 = diff2.getDate(); alert(diff2);
</script>
<script language="JavaScript">
<!--
function dstrToUTC(ds) {
var dsarr = ds.split("/");
var mm = parseInt(dsarr[0],10);
var dd = parseInt(dsarr[1],10);
var yy = parseInt(dsarr[2],10);
return Date.UTC(yy,mm-1,dd,0,0,0);
}
function datediff(ds1,ds2) {
var d1 = dstrToUTC(ds1);
var d2 = dstrToUTC(ds2);
var oneday = 86400000;
return (d2-d1) / oneday;
}
// test cases are below
var a; var b;
a = "01/09/1999";
b = "01/10/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "01/12/1999";
b = "01/19/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "01/19/1999";
b = "01/12/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "01/03/1999";
b = "01/13/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "04/30/1999";
b = "05/01/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "05/30/1999";
b = "06/01/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "02/28/1999";
b = "03/01/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "02/28/2000";
b = "03/01/2000";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "01/01/1999";
b = "12/31/1999";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "01/01/2000";
b = "12/31/2000";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
a = "12/15/1999";
b = "01/15/2001";
document.write("From "+a+" to "+b+" is "+datediff(a,b)+" day(s)<br>");
// -->
</script>
date2 = 02/09/2009不被視為日期。 它以這種方式工作。 首先它是02/09,它返回0.2222222222222222並且除以2009(0.2222222222222222/2009)。 最后你得到了一個結果date2 = 0.0001106133510314695。 以同樣的方式計算date1的結果。
這不是有效的操作。 如果要定義日期。 確保您以正確的日期格式放置數據。
使用新的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()
不是那個工作.. ??
編輯:
可能這會工作..你可以試試這個..
Date.parse("03/12/2009")-Date.parse("02/09/2009") / (24*60*60*1000)
它返回31天
它似乎對我有用..但在我的時區它花了03/12/2009作為第3個月的第11天和2009年
(24 * 60 * 60 * 1000)=每天的毫秒數
getDate
是Date
對象的一種方法。 因為任何文檔都明確說明它返回0到31范圍內的月份日期。如果不是同一個月,嘗試從另一個中減去一個是沒有意義的。
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");
您應該通過以下方式明確定義日期對象。 月份是0,因此0 = 1月,1 = 2月...
var date2 = new Date(2009,1,9);
這些是數字,而不是字符串。 如果您想使用字符串作為日期,那么您需要完全符合該格式,沒有任何內容是可選的:
var newDate = new Date(“month day,year hours:minutes:seconds”); var date2 = new Date(“2009年2月9日00:00:00”);
[編輯]完整的解決方案,如果日期格式為mm / dd / yyyy,差異應以天為單位:
<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>
使用Date.parse(date1) - Date.parse(date2)
這里解釋了如何在javascript中找到兩個日期之間的差異
是。 您必須使用Date對象,如下所示
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
嘗試
var diff2 = Date.parse("03/12/2009") - Date.parse("02/09/2009");
它會以毫秒為單位給出日期之間的差異。 將此數字除以86,400,000,差異將以天為單位。
<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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.