2010-11-11 16 views
6

दी गई थी जब मैं किसी व्यक्ति की जन्म तिथि से प्राप्त करना चाहता था। मेरे पास एक HTML कोड है जहां मैं डब के लिए डेटपिकर का उपयोग कर रहा हूं, जब मैं जन्मदिन देता हूं तो यह दिखाए बिना स्वचालित रूप से उम्र दिखाता है। कृपया इसके लिए समाधान खोजने में मेरी मदद करें।जन्म तिथि

<html> 
    <head> 
     <title> 
      DOB calculations 
     </title> 
     <link rel='stylesheet' type='text/css' href='jquery-ui.css' /> 
     <script type='text/javascript' src='jquery.min.js'> 
     </script> 
     <script type='text/javascript' src='jquery-ui.min.js'> 
     </script> 
     <script type='text/javascript' src='jquery.js'> 
     </script> 
     <script type='text/javascript' src='jquery-ui-custom.js'> 
     </script> 
     <script type='text/javascript' src='jquery.ui.datepicker.js'> 
     </script> 
     <script type="text/javascript"> 
      $(function() { 

       $('#datepicker').datepicker({ 
        changeMonth: true, 
        changeYear: true, 
        dateFormat: 'mm/dd/yy', 
        //firstDay: 1, 
        onSelect: function(dateText, inst) { 
         dateText.split('/'); 
         Bdate = new Date(dateText[2], dateText[0] - 1, dateText[1]); 
         BDateArr = ('' + Bdate).split(' '); 
         //document.getElementById('DOW').value = BDateArr[0]; 
         Cdate = new Date; 
         CDateArr = ('' + Cdate).split(" "); 
         Age = CDateArr[3] - BDateArr[3]; 
         document.getElementById('AGE').value = Age; 
         // DOBcalc(dateText); 
         //DOBcalc(); 
        } 
       }) 

      }); 
     </script> 
    </head> 

    <body> 
     <form> 
      DOB (mm/dd/yyyy): 
      <input type="text" id="datepicker" value=''> 
      Age: 
      <input id="AGE" type="text" value=""> 
     </form> 
    </body> 
</html> 

उत्तर

9

आप के बजाय अपने onSelect ईवेंट हैंडलर के रूप में इस समारोह का उपयोग कर प्रयास कर सकते हैं:

$('#dob').datepicker({ 
    onSelect: function(value, ui) { 
     var today = new Date(), 
      dob = new Date(value), 
      age = new Date(today - dob).getFullYear() - 1970; 

     $('#age').text(age); 
    }, 
    maxDate: '+0d', 
    yearRange: '1920:2010', 
    changeMonth: true, 
    changeYear: true 
}); 

यह बहुत ही सटीक (और मेरे पुराने कोड की तुलना में बेहतर) होना चाहिए, क्योंकि सब कुछ देशी को हस्तांतरित कर दिया गया है Date ऑब्जेक्ट। http://www.jsfiddle.net/yijiang/PHvYK/1

+0

भी good.Thank बहुत बहुत – yopirates

+0

NaN 17/06 के लिए वापस आ जाएगी उम्र को खोजने के लिए बहुत आसान है/1 9 86 यदि दिनांक का प्रारूप "डीडी/एमएम/वाई" – alex

0

आप जावास्क्रिप्ट में दो Date वस्तुओं घटाना हैं, तो आप मिलीसेकेंड में उनके अंतर मिलता है तो (BDate - (new Date()))/365.25/24/60/60/1000 आप एक उम्र नतीजा यह है कि एक दिन के भीतर करने के लिए सटीक होना चाहिए दे देंगे:

यह यहाँ का एक सरल प्रदर्शन देखें। (अर्थात, अगर उनके जन्मदिन आज है और इसकी एक लीप वर्ष में यह गलत हो सकता है)

0

आप जन्म तिथि ठीक से निर्माण मानते हुए, बनाने के लिए:

now = Date() //right now 

date.getTime() फ़ंक्शन का उपयोग मिलीसेकेंड में समय मिलता है। एक

one_year = 1000*60*60*24*365; 
years = (now.getTime() - DOB.getTime())/one_year; 

अपनी तिथि क्षेत्रों में से किसी में किसी भी बदलाव के लिए एक कॉलबैक में इस रखो में मिलीसेकेंड से करके उनमें से अंतर विभाजित और परिणाम भी आप की तरह प्रदर्शित करते हैं।

+0

है जो कई लीप वर्षों के कारण कुछ दिनों तक सिंक हो जाएगा - क्योंकि अधिकांश लोग 4 साल से अधिक पुराने हैं, 365.25 अधिक सटीक होंगे (अभी भी perfe नहीं है सीटी) – tobyodavies

+0

हां मैंने देखा कि आपके सबमिट के ठीक बाद, अच्छा बिंदु। मैंने सुना है कि साल 100 से विभाजित हैं लेकिन 400 नहीं लीपियर हैं, इसलिए मुझे लगता है कि 365+ (1.0/4) - (1.0/100) + (1.0/400) = 365.2425 सर्वश्रेष्ठ होगा = पी –

+0

निश्चित रूप से सावधान रहना तुलना बेहतर होगी, लेकिन इसके लिए समय कौन है? –

0
<script type="text/javascript"> 
     $(function() { 
      $('#dtp').datepicker({ 
       changeMonth: true, 
       changeYear: true, 
       dateFormat: 'mm/dd/yy', 
       //firstDay: 1, 
       onSelect: function(dateText, inst) { 
        var d = new Date(Date.parse(inst.lastVal)); 
        var diff = (new Date()).getFullYear() - d.getFullYear(); 
        document.getElementById('AGE').value = diff; 
       } 
      }); 
     }); 
    </script> 
+0

बहुत अच्छा। आपको बहुत धन्यवाद – yopirates

+0

आपको var d = new date ((inst.input.val()) देना होगा; var d = new date (date.parse (inst.lastVal) के बजाय); ठीक से काम करने के लिए – yopirates

2
function getAge(birth) { 
    var today = new Date(); 
    var curr_date = today.getDate(); 
    var curr_month = today.getMonth() + 1; 
    var curr_year = today.getFullYear(); 

    var pieces = birth.split('/'); 
    var birth_date = pieces[0]; 
    var birth_month = pieces[1]; 
    var birth_year = pieces[2]; 

    if (curr_month == birth_month && curr_date >= birth_date) return parseInt(curr_year-birth_year); 
    if (curr_month == birth_month && curr_date < birth_date) return parseInt(curr_year-birth_year-1); 
    if (curr_month > birth_month) return parseInt(curr_year-birth_year); 
    if (curr_month < birth_month) return parseInt(curr_year-birth_year-1); 
} 

var age = getAge('18/01/2011'); 
alert(age); 
+0

यह अच्छा काम है यदि आपके पास डिफ़ॉल्ट रूप से किसी भिन्न प्रारूप में दिनांक है – alex

1

प्रयास करें बहुत सरल संहिता

function agefinding() 
    { 
     var birthDay = document.getElementById("TxtDOB").value; 
     var DOB = new Date(birthDay); 
     var today = new Date(); 
     var age = today.getTime() - DOB.getTime(); 
     age = Math.floor(age/(1000 * 60 * 60 * 24 * 365.25)); 
     // alert(age); 
     return age; 
    } 

इस जावास्क्रिप्ट का उपयोग कर

संबंधित मुद्दे