Mengambil nilai jarak antara dua tanggal (javascript)

This item was filled under [ Code Snippet, Javascript ]

Menampilkan jarak jumlah hari diantara 2 tanggal.
contoh:
tanggal mulai: 2009-01-29
tanggal akhir: 2009-02-03
hasil jarak tanggal dalam jumlah hari = 5

Fungsi scriptnya sbb, simpan dengan nama file datediff.js:

var DayName=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
 
var oneMinute=1000*60;
 
var intervalObject=new Object();
intervalObject["yyyy"]={units:1000*60*60*24*365,measure:"year"};
intervalObject["m"]={units:1000*60*60*24*30,measure:"month"};
intervalObject["d"]={units:1000*60*60*24,measure:"day"};
intervalObject["Q"]={units:intervalObject["m"].units*3,measure:"quarter"};
intervalObject["H"]={units:oneMinute*60,measure:"hour"};
intervalObject["N"]={units:oneMinute,measure:"minute"};
intervalObject["S"]={units:1000,measure:"second"};
 
 
function DateDiff(dateAddObj){
	this.interval=dateAddObj.interval;
	this.date1=dateAddObj.date1;
	this.date2=dateAddObj.date2;
	this.calculate=calculate;
	this.calculate();
}
 
Date.prototype.DateDiff=DateDiff;
 
 
 
 
function calculate(){
	var paramDate1=new String(this.date1);
	splitDate1=paramDate1.split("-");
	paramDateYear1=splitDate1[0];
	paramDateMonth1=splitDate1[1]-1;
	paramDateDay1=splitDate1[2];
	if(paramDateMonth1>12){
		alert("Invalid Month!");
		return false;
	}
	if(paramDateDay1>31){
		alert("Invalid Day!");
		return false;
	}
 
 
	var paramDate2=new String(this.date2);
	splitDate2=paramDate2.split("-");
	paramDateYear2=splitDate2[0];
	paramDateMonth2=splitDate2[1]-1;
	paramDateDay2=splitDate2[2];
	if(paramDateMonth2>12){
		alert("Invalid Month!");
		return false;
	}
	if(paramDateDay2>31){
		alert("Invalid Day!");
		return false;
	}
 
 
	var paramDate1Object=new Date(paramDateYear1,paramDateMonth1,paramDateDay1);
	paramDate1Object.setHours(0);
	paramDate1Object.setMinutes(0);
	paramDate1Object.setSeconds(0);
	//paramDate1Object.getTimezoneOffset() * oneMinute;
	var paramDate1ObjectTime=paramDate1Object.getTime();
 
 
	var paramDate2Object=new Date(paramDateYear2,paramDateMonth2,paramDateDay2);
	paramDate2Object.setHours(0);
	paramDate2Object.setMinutes(0);
	paramDate2Object.setSeconds(0);
	var paramDate2ObjectTime=paramDate2Object.getTime();
 
	if(paramDate2Object>paramDate1Object){
		DSTAdjust=(paramDate2Object.getTimezoneOffset() - paramDate1Object.getTimezoneOffset()) * oneMinute;
 
	}
	else{
		DSTAdjust=(paramDate1Object.getTimezoneOffset() - paramDate2Object.getTimezoneOffset()) * oneMinute;
	}
 
	if(typeof intervalObject[this.interval]!="undefined"){
		if(typeof intervalObject[this.interval].units=="undefined"){
			alert("Interval is invalid!");
			return false;
		}
 
		// var diff=Math.abs(paramDate2ObjectTime-paramDate1ObjectTime) - DSTAdjust;
		// yg ini saya ubah tidak memakai abs, supaya hasil minus tetap minus, berguna untuk validasi dll..
		var diff=(paramDate2ObjectTime-paramDate1ObjectTime) - DSTAdjust;
		var timeDiff=Math.floor(diff/intervalObject[this.interval].units);
		if(timeDiff>1){
			var rname=intervalObject[this.interval].measure + "s";
		}
		else{
			var rname=intervalObject[this.interval].measure;
		}
 
		this.difference=parseInt(timeDiff);
	}
	else{
		this.difference="Wrong format of interval!";
 
	}
 
}

Penggunaan:

<html>
<head>
<script type="text/javascript" src="datediff.js"></script>
</head>
 
<body>
 
<script type="text/javascript">
var curDate=new Date();
startDate="2009-02-02";
endDate="2009-01-30";
curDate.DateDiff({interval:"d",date1:startDate,date2:endDate});
alert(curDate.difference);
</script>
 
</body>

Maka hasilnya akan ada alert berjumlah: -3
Hasil minus disini bisa berguna untuk cek validasi dan lain2.. sesuaikan dgn kebutuhan aplikasi kita.

Sumber Core JS: http://www.softxml.com/jsdatefunctions/datefunctions.htm
Beberapa code telah dimodif, silahkan lihat komentar pada file script “datediff.js

Semoga bermanfaat :mrgreen:

Rate this topic:
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5 out of 5)
Loading ... Loading ...
Popularity: 2,225 views
Tagged with: [ , ]
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Artikel Sejenis

5 Comments on “Mengambil nilai jarak antara dua tanggal (javascript)”

  • 25 February, 2009, 4:32

    terimakasih mas sangat membantu :)

    Like or Dislike: Thumb up 1 Thumb down 0
  • 15 August, 2009, 11:49

    “we gy pain nich…….?
    “leh gbung g’……..?

    Like or Dislike: Thumb up 1 Thumb down 0
  • 15 August, 2009, 15:50

    @eva, boleh2 saja..

    Like or Dislike: Thumb up 1 Thumb down 0
  • 13 January, 2010, 9:07

    kalo hitung umur pake function itu gimana??
    thx be4

    Like or Dislike: Thumb up 0 Thumb down 0
  • 13 January, 2010, 19:27

    @dian,
    coba script ini:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Age Calculation</title>
     
    <script type="text/javascript">
    <!--
    function Age() {
    	var bday=parseInt(document.forms[0].txtBday.value);
    	var bmo=(parseInt(document.forms[0].txtBmo.value)-1);
    	var byr=parseInt(document.forms[0].txtByr.value);
    	var byr;
    	var age;
    	var now = new Date();
    	tday=now.getDate();
    	tmo=(now.getMonth());
    	tyr=(now.getFullYear());
    	{
    		if((tmo > bmo)||(tmo==bmo & tday>=bday))
    		{age=byr}
    		else
    		{age=byr+1}
    		alert("As of today, "+now+' \n'+", you are:"+(tyr-age)+ " years old");
    	}
    }
    //-->
    </script>
    </head>
    <body >
     
    <form>
    Enter your date <input type="text" name="txtBday" size="2"><br/>
    Enter your birth Month(1-12)<input type="text" name="txtBmo"size="2"><br/>
    Enter your 4 digit birth year<input type="text" name="txtByr"size="4" ><br/>
    <input type="submit" value="submit" onClick="Age()"><input type="reset" value="reset">
    </form>
    </body>
    </html>
    Like or Dislike: Thumb up 0 Thumb down 0

Leave a Comment

Halaman ini di eksekusi dalam waktu 1.169 detik! (koneksi mayan bagus nih...)