ช่วยดูโค๊ดคำนวณอายุให้หน่อยคะ คือต้องการคำนวณจากวันเดือนปี ต้องเปลี่ยนตรงไหนคะจากเดิมเป็นปีเดือนวัน
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ช่วยดูโค๊ดคำนวณอายุให้หน่อยคะ คือต้องการคำนวณจากวันเดือนปี ต้องเปลี่ยนตรงไหนคะจากเดิมเป็นปีเดือนวัน
ช่วยดูโค๊ดคำนวณอายุให้หน่อยคะ คือต้องการคำนวณจากวันเดือนปี ต้องเปลี่ยนตรงไหนคะจากเดิมเป็นปีเดือนวัน
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | <script type= "text/javascript" > $( function () { var dateBefore=null; $( "#bday" ).datepicker({ dateFormat: 'dd-mm-yy' , dayNamesMin: [ 'อา' , 'จ' , 'อ' , 'พ' , 'พฤ' , 'ศ' , 'ส' ], monthNamesShort: [ 'มกราคม' , 'กุมภาพันธ์' , 'มีนาคม' , 'เมษายน' , 'พฤษภาคม' , 'มิถุนายน' , 'กรกฎาคม' , 'สิงหาคม' , 'กันยายน' , 'ตุลาคม' , 'พฤศจิกายน' , 'ธันวาคม' ], changeMonth: true, changeYear: true , showAnim: "clip" , yearRange: '1935:2005' , showButtonPanel: true, beforeShow: function (){ if ($(this).val()!= "" ){ var arrayDate=$(this).val().split( "-" ); arrayDate[2]=parseInt(arrayDate[2])-543; $(this).val(arrayDate[0]+ "-" +arrayDate[1]+ "-" +arrayDate[2]); } setTimeout( function (){ $.each($( ".ui-datepicker-year option" ), function (j,k){ var textYear=parseInt($( ".ui-datepicker-year option" ).eq(j).val())+543; $( ".ui-datepicker-year option" ).eq(j).text(textYear); }); },50); }, onChangeMonthYear: function (){ setTimeout( function (){ $.each($( ".ui-datepicker-year option" ), function (j,k){ var textYear=parseInt($( ".ui-datepicker-year option" ).eq(j).val())+543; $( ".ui-datepicker-year option" ).eq(j).text(textYear); }); },50); }, onClose: function (){ if (dateBefore == null) { dateBefore=$(this).val(); } if ($(this).val()!= "" && $(this).val()==dateBefore){ var arrayDate=dateBefore.split( "-" ); arrayDate[2]=parseInt(arrayDate[2])+543; $(this).val(arrayDate[0]+ "-" +arrayDate[1]+ "-" +arrayDate[2]); } }, onSelect: function (dateText, inst){ dateBefore=$(this).val(); var arrayDate=dateText.split( "-" ); arrayDate[2]=parseInt(arrayDate[2])+543; $(this).val(arrayDate[0]+ "-" +arrayDate[1]+ "-" +arrayDate[2]); //คำนวนอายุอัตโนมัติ var bdate = $( '#bday' ).val(); if (bdate != '' ){ var str=bdate.split( '-' ); var firstdate= new Date (str[0],str[1],str[2]); var today = new Date (); var dayDiff = Math. ceil (today.getTime() - firstdate.getTime()) / (1000 * 60 * 60 * 24 * 365); var thisage = parseInt(dayDiff); $( '#age' ).val(thisage); $( "#age" ).attr( 'readonly' , true); } //end calulate } }); }); </script> |

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1

ลองดูเนือหานี้เป็นแนวทาง
ใช้ moment.js หาอายุ จากวัน เดือนปี เกิด อย่างง่าย
https://www.ninenik.com/content.php?arti_id=577 via @ninenik

ความคิดเห็นที่
2
ทำได้แล้วคะ แต่ทำไมเดือนกุมภาของปีนี้ มันมี 28 วันทำยังไงให้มี 29 วันคะ

ความคิดเห็นที่
3
จากลิงค์นี้ https://www.ninenik.com/content.php?arti_id=577

ความคิดเห็นที่
4
ตัว datetimepicker เรื่องเกี่ยวกับปี พ.ศ. ภาษาไทยจะไม่ค่อยสมบูรณ์ ต้องปรับให้พอใช้งานได้
ให้ไปโหลดไฟล์ css และ javascript สองไฟล์ที่ลิ้งค์นี้
jquery.datetimepicker.css
jquery.datetimepicker.full.js
และก็โหลดไฟล์
moment-with-locales.min.js
ที่ลิ้งค์นี้ คลิกขวาที่ลิ้งค์นี้แล้ว save
การใช้งานก็ประมาณโค้ดด้านล่าง
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | <!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" > <title>Age</title> <link rel= "stylesheet" href= "jquery.datetimepicker.css" > </head> <body> <br><br> <div style= "margin:auto;width:500px;" > BirthDay: <input type= "text" name= "mydateth" id= "mydateth" value= "05-06-2525" > <br><br> Age: <input type= "text" name= "age" id= "age" value= "" > <br><br> <div id= "mydateth3" ></div> </div> <script src= "//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" ></script> <script src= "jquery.datetimepicker.full.js" ></script> <script type= "text/javascript" src= "moment-with-locales.min.js" ></script> <script type= "text/javascript" > $( function (){ $.datetimepicker.setLocale( 'th' ); // ต้องกำหนดเสมอถ้าใช้ภาษาไทย และ เป็นปี พ.ศ. var objBD=$( "#mydateth" ); // กรณีใช้แบบ input objBD.datetimepicker({ timepicker:false, format: 'd-m-Y' , // กำหนดรูปแบบวันที่ ที่ใช้ เป็น 00-00-0000 lang: 'th' , // ต้องกำหนดเสมอถ้าใช้ภาษาไทย และ เป็นปี พ.ศ. onSelectDate: function (dp, $input ){ var yearT= new Date (dp).getFullYear()-0; var yearTH=yearT+543; var fulldate= $input .val(); var fulldateTH=fulldate.replace(yearT,yearTH); $input .val(fulldateTH); // ส่วนของการจัดการวันที่ เพื่อหาจำนวนอายุ var dayBirth=objBD.val(); var getdayBirth=dayBirth.split( "-" ); var YB=getdayBirth[2]-543; var MB=getdayBirth[1]; var DB=getdayBirth[0]; var setdayBirth=moment(YB+ "-" +MB+ "-" +DB); var setNowDate=moment(); var yearData=setNowDate.diff(setdayBirth, 'years' , true); // ข้อมูลปีแบบทศนิยม var yearFinal=Math. round (setNowDate.diff(setdayBirth, 'years' , true),0); // ปีเต็ม var yearReal=setNowDate.diff(setdayBirth, 'years' ); // ปีจริง var monthDiff=Math. floor ((yearData-yearReal)*12); // เดือน var str_year_month=yearReal+ " ปี " +monthDiff+ " เดือน" ; // ต่อวันเดือนปี $( "#age" ).val(str_year_month); }, }); // กรณีใช้กับ input ต้องกำหนดส่วนนี้ด้วยเสมอ เพื่อปรับปีให้เป็น ค.ศ. ก่อนแสดงปฏิทิน objBD.on( "mouseenter mouseleave" , function (e){ var dateValue=objBD.val(); if (dateValue!= "" ){ var arr_date=dateValue.split( "-" ); // ถ้าใช้ตัวแบ่งรูปแบบอื่น ให้เปลี่ยนเป็นตามรูปแบบนั้น // ในที่นี้อยู่ในรูปแบบ 00-00-0000 เป็น d-m-Y แบ่งด่วย - ดังนั้น ตัวแปรที่เป็นปี จะอยู่ใน array // ตัวที่สอง arr_date[2] โดยเริ่มนับจาก 0 if (e.type== "mouseenter" ){ var yearT=arr_date[2]-543; } if (e.type== "mouseleave" ){ var yearT=parseInt(arr_date[2])+543; } dateValue=dateValue.replace(arr_date[2],yearT); objBD.val(dateValue); } }); }); </script> </body> </html> |
ตัวอย่าง
BirthDay:
Age:
Age:
>>> อัพเดท >>> 06-03-2017
------------------------------------------
กรณีใช้ปี ค.ศ. เปลี่ยนโค้ดดังนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <script type= "text/javascript" > $( function (){ $.datetimepicker.setLocale( 'th' ); // ต้องกำหนดเสมอถ้าใช้ภาษาไทย และ เป็นปี พ.ศ. var objBD=$( "#mydateth" ); // กรณีใช้แบบ input objBD.datetimepicker({ timepicker:false, format: 'Y-m-d' , // กำหนดรูปแบบวันที่ ที่ใช้ เป็น 00-00-0000 lang: 'th' , // ต้องกำหนดเสมอถ้าใช้ภาษาไทย และ เป็นปี พ.ศ. onSelectDate: function (dp, $input ){ // ส่วนของการจัดการวันที่ เพื่อหาจำนวนอายุ var dayBirth=objBD.val(); var getdayBirth=dayBirth.split( "-" ); var YB=getdayBirth[0]; var MB=getdayBirth[1]; var DB=getdayBirth[2]; var setdayBirth=moment(YB+ "-" +MB+ "-" +DB); var setNowDate=moment(); var yearData=setNowDate.diff(setdayBirth, 'years' , true); // ข้อมูลปีแบบทศนิยม var yearFinal=Math. round (setNowDate.diff(setdayBirth, 'years' , true),0); // ปีเต็ม var yearReal=setNowDate.diff(setdayBirth, 'years' ); // ปีจริง var monthDiff=Math. floor ((yearData-yearReal)*12); // เดือน var str_year_month=yearReal+ " ปี " +monthDiff+ " เดือน" ; // ต่อวันเดือนปี $( "#age" ).val(str_year_month); }, }); }); </script> |

ความคิดเห็นที่
5
ได้แล้วคะ ขอบคุณนะคะ แล้วถ้าต้องการกำหนดช่วงปีเริ่มต้น สิ้นสุดเอง ควรเขียนโค๊ดยังไงคะ

ความคิดเห็นที่
6
ในส่วนของการกำหนดค่า datetimepicker กำหนดเพิ่มค่า
yearStart กับ yearEnd เข้าไป ใช้เป้นค่าปี ค.ศ.
ต้วยอย่างโค้ดเดิม
1 2 3 4 5 6 | var objBD=$( "#mydateth" ); // กรณีใช้แบบ input objBD.datetimepicker({ timepicker: false , format: 'd-m-Y' , // กำหนดรูปแบบวันที่ ที่ใช้ เป็น 00-00-0000 lang: 'th' , // ต้องกำหนดเสมอถ้าใช้ภาษาไทย และ เป็นปี พ.ศ. |
เพิ่มเป็น
1 2 3 4 5 6 7 8 | var objBD=$( "#mydateth" ); // กรณีใช้แบบ input objBD.datetimepicker({ yearStart: '1950' , yearEnd: '2020' , timepicker: false , format: 'd-m-Y' , // กำหนดรูปแบบวันที่ ที่ใช้ เป็น 00-00-0000 lang: 'th' , // ต้องกำหนดเสมอถ้าใช้ภาษาไทย และ เป็นปี พ.ศ. |
หรือดูการกำหนดค่าอื่นๆ เพิ่มเติมที่
ดูหัวข้อตารางชื่อว่า Full options list

ความคิดเห็นที่
7
ขอบคุณนะคะ คือตอนนี้ลงฐานข้อมูลแล้วแต่พอเวลาดึงมาโชว์มันเป็น yy-mm-dd ควรเขียนโค๊ดยังไงให้เป็น dd-mm-yy คะ

ความคิดเห็นที่
8


ความคิดเห็นที่
9
ต้องการดึงวันที่ซึ่งเก็บเป็นปีเดือนวัน จากฐานข้อมูล มาโชว์ในตาราง เป็นวันเดือนปีอ่าคะ จะทำยังไง
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | <script type= "text/javascript" > $( function (){ $.datetimepicker.setLocale( 'th' ); // ต้องกำหนดเสมอถ้าใช้ภาษาไทย และ เป็นปี พ.ศ. var objBD=$( "#bday" ); // กรณีใช้แบบ input objBD.datetimepicker({ yearStart: '1935' , yearEnd: '1997' , timepicker:false, format: 'd-m-Y' , // กำหนดรูปแบบวันที่ ที่ใช้ เป็น 00-00-0000 lang: 'th' , // ต้องกำหนดเสมอถ้าใช้ภาษาไทย และ เป็นปี พ.ศ. onSelectDate: function (dp, $input ){ var yearT= new Date (dp).getFullYear()-0; var yearTH=yearT+543; var fulldate= $input .val(); var fulldateTH=fulldate.replace(yearT,yearTH); $input .val(fulldateTH); // ส่วนของการจัดการวันที่ เพื่อหาจำนวนอายุ var dayBirth=objBD.val(); var getdayBirth=dayBirth.split( "-" ); var YB=getdayBirth[2]-543; var MB=getdayBirth[1]; var DB=getdayBirth[0]; var setdayBirth=moment(YB+ "-" +MB+ "-" +DB); var setNowDate=moment(); var yearData=setNowDate.diff(setdayBirth, 'years' , true); // ข้อมูลปีแบบทศนิยม var yearFinal=Math. round (setNowDate.diff(setdayBirth, 'years' , true),0); // ปีเต็ม var yearReal=setNowDate.diff(setdayBirth, 'years' ); // ปีจริง var monthDiff=Math. floor ((yearData-yearReal)*12); // เดือน var str_year_month=yearReal+ " " ; // ต่อวันเดือนปี $( "#age" ).val(str_year_month); }, }); // กรณีใช้กับ input ต้องกำหนดส่วนนี้ด้วยเสมอ เพื่อปรับปีให้เป็น ค.ศ. ก่อนแสดงปฏิทิน objBD.on( "mouseenter mouseleave" , function (e){ var dateValue=objBD.val(); if (dateValue!= "" ){ var arr_date=dateValue.split( "-" ); // ถ้าใช้ตัวแบ่งรูปแบบอื่น ให้เปลี่ยนเป็นตามรูปแบบนั้น // ในที่นี้อยู่ในรูปแบบ 00-00-0000 เป็น d-m-Y แบ่งด่วย - ดังนั้น ตัวแปรที่เป็นปี จะอยู่ใน array // ตัวที่สอง arr_date[2] โดยเริ่มนับจาก 0 if (e.type== "mouseenter" ){ var yearT=arr_date[2]-543; } if (e.type== "mouseleave" ){ var yearT=parseInt(arr_date[2])+543; } dateValue=dateValue.replace(arr_date[2],yearT); objBD.val(dateValue); } }); }); </script> <?php ####เริ่มส่วนค้นหาจากสมาชิก if ( $_GET [ 'action' ] == "search" ) { if ( $_POST [ 'memID' ] <> NULL) { $sql = "SELECT * FROM tb_member WHERE memberID = '" .trim( $_POST ['memID '])."' "; $query = mysql_query( $sql ) or die (mysql_error()); $row = mysql_num_rows( $query ); if ( $row <> 0) { $result = mysql_fetch_assoc( $query ); ?> <? } } } ####### จบส่วนค้นหาจากสมาชิก ?> <input name= "bday" type= "text" id= "bday" value= "<?=$result[" bday "];?>" size= "15" maxlength= "15" /> |

ความคิดเห็นที่
10
1 2 3 4 | ทำได้แล้วคะ แต่มันยังเป็น คศ อยู่ จะบวก 543 ควรเขียนโค๊ดยังไงคะ <?php echo date ( 'd-m-Y' , strtotime ( $result [ 'bday' ]));?> |

ขอบคุณทุกการสนับสนุน
![]()