รบกวน คำนวณวันที่ ทีจ้า time diff javascript

พูดคุยแลกเปลี่ยน ปัญหา การเขียน JavaScript เครื่องมือ AJAX Web 2.0 AJAX Framework jQuery และ Node.JS รวมถึง Framework Express ของ Node.JS ทำงานฝั่ง Server

Moderator: mindphp

4404

รบกวน คำนวณวันที่ ทีจ้า time diff javascript

โพสต์ที่ยังไม่ได้อ่าน โดย 4404 »

time diff javascript
เรามี3ช่องกรอกด้วยกัน

ช่อง 1 เป็นการใส่วันที่โดยใช้จาวาสคิปต์ปฏิทิน รูปแบบที่ได้ในช่องคือ dd-mm-yyyy
ช่อง 2 เป็นการใส่วันที่โดยใช้จาวาสคิปต์ปฏิทิน รูปแบบที่ได้ในช่องคือ dd-mm-yyyy เหมือนกับช่อง 1
โดยจะเอาวันที่ช่องที่ 1 - ช่องที่ 2 แล้วผลลัพธ์จะออกมาเป็นจำนวนวันโดยออกมาช่องที่ 3

มีวิธีการคำนวณอย่างไรคะ
แก้ไขล่าสุดโดย mindphp เมื่อ 17/05/2010 7:43 pm, แก้ไขไปแล้ว 2 ครั้ง.
เหตุผล: ??????????????????????????????????????????????????????????? ??????????????? time diff javascript ?????????????????????????????????????????
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41401
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: รบกวน คำนวณวันที่ ทีจ้า

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ต้องการใช้ Javascript หรือ php ครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
SG14
PHP Sr. Member
PHP Sr. Member
โพสต์: 62
ลงทะเบียนเมื่อ: 02/07/2009 3:55 pm
ติดต่อ:

Re: รบกวน คำนวณวันที่ ทีจ้า

โพสต์ที่ยังไม่ได้อ่าน โดย SG14 »

ตอนตั้งกระทู้ลืมเข้าสู่ระบบ
อยากได้แบบ จาวาสคริปต์คะ ขอโทษทีนะคะถ้าผิดหมวด
SG14
PHP Sr. Member
PHP Sr. Member
โพสต์: 62
ลงทะเบียนเมื่อ: 02/07/2009 3:55 pm
ติดต่อ:

Re: รบกวน คำนวณวันที่ ทีจ้า

โพสต์ที่ยังไม่ได้อ่าน โดย SG14 »

ไปเจอผู้ใจดีแปลงให้ แต่ยังติดปัญหาคือ เราจะทำอย่างไรเมื่อเราคลิกปฎิทินทั้ง2ช่องแล้ว ช่องที่3มันจะคำนวณวันขึ้นมาอัตโนมัติเลย

โดยเราแก้ตัวด้านล่างใหม่
function jsDateDiff(strDate1,strDate2){
var theDate1 = Date.parse(strDate1)/1000;
var theDate2 = Date.parse(strDate2)/1000;
var diff=(theDate2-theDate1)/(60*60*24);
return diff;
}
document.write("Date Diff = "+jsDateDiff("document.formnew.input1","document.formnew.input2.value")+"<br>");
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41401
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: รบกวน คำนวณวันที่ ทีจ้า

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ในช่อง input2 ใส่ event ลงไปเช่น onchange="่javascript_function">
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41401
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: รบกวน คำนวณวันที่ ทีจ้า

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

function คำนวนออกมาเป็น ปี เดือน วัน ที่ต่างกันของ วันที่ สองตัว

โค้ด: เลือกทั้งหมด

function qryHowOld(from, until)
{
   var dtAsOfDate;
   var dtBirth;
   var dtAnniversary;
   var intSpan;
   var intYears;
   var intMonths;
   var intWeeks;
   var intDays;
   var intHours;
   var intMinutes;
   var intSeconds;
   var strHowOld;

abg		=	from.split('-')
aend	=	until.split('-')
s_form		=	abg[0]+','+abg[1]+','+abg[2];
s_until			=	aend[0]+','+aend[1]+','+aend[2];

   // get born date
   dtBirth = new Date(s_form);
   
   // get as of date
   dtAsOfDate = new Date(s_until);

   // if as of date is on or after born date
   if ( dtAsOfDate >= dtBirth )
      {

      // get time span between as of time and birth time
      intSpan = ( dtAsOfDate.getUTCHours() * 3600000 +
                  dtAsOfDate.getUTCMinutes() * 60000 +
                  dtAsOfDate.getUTCSeconds() * 1000    ) -
                ( dtBirth.getUTCHours() * 3600000 +
                  dtBirth.getUTCMinutes() * 60000 +
                  dtBirth.getUTCSeconds() * 1000       )

      // start at as of date and look backwards for anniversary 

      // if as of day (date) is after birth day (date) or
      //    as of day (date) is birth day (date) and
      //    as of time is on or after birth time
      if ( dtAsOfDate.getUTCDate() > dtBirth.getUTCDate() ||
           ( dtAsOfDate.getUTCDate() == dtBirth.getUTCDate() && intSpan >= 0 ) )
         {

         // most recent day (date) anniversary is in as of month
         dtAnniversary = 
            new Date( Date.UTC( dtAsOfDate.getUTCFullYear(),
                                dtAsOfDate.getUTCMonth(),
                                dtBirth.getUTCDate(),
                                dtBirth.getUTCHours(),
                                dtBirth.getUTCMinutes(),
                                dtBirth.getUTCSeconds() ) );

         }

      // if as of day (date) is before birth day (date) or
      //    as of day (date) is birth day (date) and
      //    as of time is before birth time
      else
         {

         // most recent day (date) anniversary is in month before as of month
         dtAnniversary = 
            new Date( Date.UTC( dtAsOfDate.getUTCFullYear(),
                                dtAsOfDate.getUTCMonth() - 1,
                                dtBirth.getUTCDate(),
                                dtBirth.getUTCHours(),
                                dtBirth.getUTCMinutes(),
                                dtBirth.getUTCSeconds() ) );

         // get previous month
         intMonths = dtAsOfDate.getUTCMonth() - 1;
         if ( intMonths == -1 )
            intMonths = 11;

         // while month is not what it is supposed to be (it will be higher)
         while ( dtAnniversary.getUTCMonth() != intMonths )

            // move back one day
            dtAnniversary.setUTCDate( dtAnniversary.getUTCDate() - 1 );

         }

      // if anniversary month is on or after birth month
      if ( dtAnniversary.getUTCMonth() >= dtBirth.getUTCMonth() )
         {

         // months elapsed is anniversary month - birth month
         intMonths = dtAnniversary.getUTCMonth() - dtBirth.getUTCMonth();

         // years elapsed is anniversary year - birth year
         intYears = dtAnniversary.getUTCFullYear() - dtBirth.getUTCFullYear();

         }

      // if birth month is after anniversary month
      else
         {

         // months elapsed is months left in birth year + anniversary month
         intMonths = (11 - dtBirth.getUTCMonth()) + dtAnniversary.getUTCMonth() + 1;

         // years elapsed is year before anniversary year - birth year
         intYears = (dtAnniversary.getUTCFullYear() - 1) - dtBirth.getUTCFullYear();

         }

      // to calculate weeks, days, hours, minutes and seconds
      // we can take the difference from anniversary date and as of date

      // get time span between two dates in milliseconds
      intSpan = dtAsOfDate - dtAnniversary;

      // get number of weeks
      intWeeks = Math.floor(intSpan / 604800000);

      // subtract weeks from time span
   //   intSpan = intSpan - (intWeeks * 604800000);
      
      // get number of days
      intDays = Math.floor(intSpan / 86400000);

      // subtract days from time span
      intSpan = intSpan - (intDays * 86400000);

      // get number of hours
      intHours = Math.floor(intSpan / 3600000);
    
      // subtract hours from time span
      intSpan = intSpan - (intHours * 3600000);

      // get number of minutes
      intMinutes = Math.floor(intSpan / 60000);

      // subtract minutes from time span
      intSpan = intSpan - (intMinutes * 60000);

      // get number of seconds
      intSeconds = Math.floor(intSpan / 1000);

      // create output string     
      if ( intYears > 0 )
         if ( intYears > 1 )
            strHowOld = intYears.toString() + ' Years';
         else
            strHowOld = intYears.toString() + ' Year';
      else
         strHowOld = '';

      if ( intMonths > 0 )
         if ( intMonths > 1 )
            strHowOld = strHowOld + ' ' + intMonths.toString() + ' Months';
         else
            strHowOld = strHowOld + ' ' + intMonths.toString() + ' Month';
        /*   
      if ( intWeeks > 0 )
         if ( intWeeks > 1 )
            strHowOld = strHowOld + ' ' + intWeeks.toString() + ' Weeks';
         else
            strHowOld = strHowOld + ' ' + intWeeks.toString() + ' Week';
*/
      if ( intDays > 0 )
         if ( intDays > 1 )
            strHowOld = strHowOld + ' ' + intDays.toString() + ' วัน';
         else
            strHowOld = strHowOld + ' ' + intDays.toString() + ' วัน';

      if ( intHours > 0 )
         if ( intHours > 1 )
            strHowOld = strHowOld + ' ' + intHours.toString() + ' ชม.';
         else
            strHowOld = strHowOld + ' ' + intHours.toString() + ' ชม.';
 
      if ( intMinutes > 0 )
         if ( intMinutes > 1 )
            strHowOld = strHowOld + ' ' + intMinutes.toString() + ' นาที';
         else
            strHowOld = strHowOld + ' ' + intMinutes.toString() + ' นาที';

      if ( intSeconds > 0 )
         if ( intSeconds > 1 )
            strHowOld = strHowOld + ' ' + intSeconds.toString() + ' วินาที';
         else
            strHowOld = strHowOld + ' ' + intSeconds.toString() + ' วินาที';

      }
   else
      strHowOld = 'Not Born Yet'

   // return string representation
   return strHowOld
   }   
alert( qryHowOld('2004-05-31', '2010-05-29') );
</script>
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
SG14
PHP Sr. Member
PHP Sr. Member
โพสต์: 62
ลงทะเบียนเมื่อ: 02/07/2009 3:55 pm
ติดต่อ:

Re: รบกวน คำนวณวันที่ ทีจ้า

โพสต์ที่ยังไม่ได้อ่าน โดย SG14 »

ขอบคุณนะคะ
ฟังก์ชั่นที่ให้มานั้นคำตอบออกมาเป็นจำนวนวันหรือไม่เพราะเราจะเอาเป็นจำนวนวันนะคะ

ตอนนี้เราลองดัดแปลงอีกยังไงช่วยดูให้ทีนะคะมันค่ามันไม่ออกตรงช่องอินพุต

function jsDateDiff(strDate1,strDate2){
var theDate1 = Date.parse(strDate1)/1000;
var theDate2 = Date.parse(strDate2)/1000;
var diff=(theDate2-theDate1)/(60*60*24);
return diff;
}
document.formnew.input3.value = jsDateDiff(document.formnew.input1.value, document.formnew.input2.value);


<body>
<INPUT name="input1" size="10" readonly="true" onChange="jsDateDiff">
<INPUT name="input2" size="10" readonly="true" onChange="jsDateDiff">
<INPUT name="input3" size="10">
</body>
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41401
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: รบกวน คำนวณวันที่ ทีจ้า

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

mindphp เขียน:ในช่อง input2 ใส่ event ลงไปเช่น onchange="่javascript_function">
ในช่อง input2 ใส่ event ลงไปเช่น onchange="่javascript_function(var1,var2)">
var1 , var2 คือ value ของ form ที่ต้องการเอาไปหาผลต่าง
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
SG14
PHP Sr. Member
PHP Sr. Member
โพสต์: 62
ลงทะเบียนเมื่อ: 02/07/2009 3:55 pm
ติดต่อ:

Re: รบกวน คำนวณวันที่ ทีจ้า

โพสต์ที่ยังไม่ได้อ่าน โดย SG14 »

var1,var2
พิมพ์แบบนี้ไปเลยหรอคะ
คือค่าที่รับมันเป็ยวันที่จากอินพุตนะคะ งง
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41401
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: รบกวน คำนวณวันที่ ทีจ้า

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

SG14 เขียน:var1,var2
พิมพ์แบบนี้ไปเลยหรอคะ
คือค่าที่รับมันเป็ยวันที่จากอินพุตนะคะ งง
ตัวอย่างการใช้งาน function กับการรับค่าจาก form

โค้ด: เลือกทั้งหมด

<script type="text/javascript">
function Myfuc(var1,var2)
{
	var3 = var1+var2;
	document.getElementById('var3').value = var3;
}
</script>
<body>
<form id="form1" method="post" action="">
  <p>
    <input type="text" name="textfield" id="textfield" />
    <input type="text" name="textfield2" id="textfield2" onchange="Myfuc(document.getElementById('textfield').value,document.getElementById('textfield2').value)" />
    <input type="text" name="var3" id="var3" />
  </p>
</form>
ตามตัวอย่างเป็นการเชื่อม String ของ input 2 ช่อง แล้วให้แสดงในช่องที่ 3
ลอง Copy โค้ดไปลองดัดแปลงดูนะครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 3