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

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

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


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
 
 
การใช้งานก็ประมาณโค้ดด้านล่าง
 
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:

 
 


>>>  อัพเดท >>> 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>


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


Tanyarat Tepsanta 02-08-2016 23:59
 ความคิดเห็นที่ 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


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


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


ninenik 03-08-2016
 ความคิดเห็นที่ 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" />


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


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






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ
เมษายน
มกราคม
กุมภาพันธ์
มีนาคม
เมษายน
พฤษภาคม
มิถุนายน
กรกฎาคม
สิงหาคม
กันยายน
ตุลาคม
พฤศจิกายน
ธันวาคม
2568
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
อา.จ.อ.พ.พฤ.ศ.ส.
30
31
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
1
2
3
00:00
01:00
02:00
03:00
04:00
05:00
06:00
07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
21:00
22:00
23:00