ช่วยดูโค๊ดคำนวณอายุให้หน่อยคะ คือต้องการคำนวณจากวันเดือนปี ต้องเปลี่ยนตรงไหนคะจากเดิมเป็นปีเดือนวัน

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ช่วยดูโค๊ดคำนวณอายุให้หน่อยคะ คือต้องการคำนวณจากวันเดือนปี ต้องเปลี่ยนตรงไหนคะจากเดิมเป็นปีเดือนวัน

ช่วยดูโค๊ดคำนวณอายุให้หน่อยคะ คือต้องการคำนวณจากวันเดือนปี ต้องเปลี่ยนตรงไหนคะจากเดิมเป็นปีเดือนวัน
 <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>    



Tanyarat Tepsanta 02-08-2016 13:38:43

คำแนะนำ และการใช้งาน

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


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
 ไม่ค่อยเข้าใจที่ถาม
ลองดูเนือหานี้เป็นแนวทาง
ใช้ moment.js หาอายุ จากวัน เดือนปี เกิด อย่างง่าย 


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


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


Tanyarat Tepsanta 02-08-2016 16:25
 ความคิดเห็นที่ 4
ตัว datetimepicker เรื่องเกี่ยวกับปี พ.ศ. ภาษาไทยจะไม่ค่อยสมบูรณ์ ต้องปรับให้พอใช้งานได้
ให้ไปโหลดไฟล์ css และ javascript สองไฟล์ที่ลิ้งค์นี้
 
jquery.datetimepicker.css
jquery.datetimepicker.full.js
 
 
และก็โหลดไฟล์ 
 
moment-with-locales.min.js
 
ที่ลิ้งค์นี้ คลิกขวาที่ลิ้งค์นี้แล้ว save
 
 
การใช้งานก็ประมาณโค้ดด้านล่าง
 
<!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:

 
 


>>>  อัพเดท >>> 06-03-2017
------------------------------------------
กรณีใช้ปี ค.ศ. เปลี่ยนโค้ดดังนี้

<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>    


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


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


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


Tanyarat Tepsanta 03-08-2016 13:50
 ความคิดเห็นที่ 8


ninenik 03-08-2016
 ความคิดเห็นที่ 9
ต้องการดึงวันที่ซึ่งเก็บเป็นปีเดือนวัน จากฐานข้อมูล มาโชว์ในตาราง เป็นวันเดือนปีอ่าคะ จะทำยังไง

<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" />



Tanyarat Tepsanta 03-08-2016 14:40
 ความคิดเห็นที่ 10
ทำได้แล้วคะ แต่มันยังเป็น คศ อยู่ จะบวก 543 ควรเขียนโค๊ดยังไงคะ


<?php echo date('d-m-Y',strtotime($result['bday']));?>


Tanyarat Tepsanta 03-08-2016 14:49
1 2 Next






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ