جدول محتوایی

آموزش محاسبه سن در جاوا اسکریپت

جاوا اسکریپت برخی از توابع داخلی و تاریخ را ارائه می دهد که به محاسبه سن از تاریخ (تاریخ تولد) کمک می کند. با استفاده از این روش های جاوا اسکریپت، به راحتی می توانید سن هر کسی را پیدا کنید. برای محاسبه سن در جاوا اسکریپت، ما به ورودی تاریخ از کاربر و تاریخ فعلی سیستم نیاز داریم. هنگام محاسبه تفاوت بین آنها باید شرایط زیر را در نظر داشته باشیم:

  • اگر تاریخ فعلی کمتر از تاریخ (تاریخ تولد) وارد شده توسط کاربر باشد، آن ماه به عنوان ماه کامل نشده محاسبه نخواهد شد. در غیر این صورت، تعداد روزهای ماه (30 یا 31) را به تاریخ فعلی اضافه می کنیم تا تفاوت بین آنها بدست آید.
  • اگر ماه فعلی کمتر از ماه تولد باشد، سال جاری محاسبه نمی شود. برای به دست آوردن تفاوت ماه، با جمع کردن تعداد کل ماه ها (12) به ماه جاری کم می کنیم.
  • در نهایت، فقط باید تاریخ، ماه و سال را پس از احراز دو شرط بالا کم کنیم.

 

اکنون، این فرآیند را به چند روش پیاده سازی می کنیم.

روش های مختلفی برای محاسبه سن از تاریخ تولد وجود دارد.

ما روش های ساده و قابل درک برای محاسبه سن با استفاده از جاوا اسکریپت را مورد بحث قرار خواهیم داد.

پیش از ادامه ی مقاله ، در صورت نیاز به خرید سرور مجازی ایران به سایت ایرانیکاسرور مراجعه کرده و از پلن های فوق العاده با قیمت های عالی دیدن کنید.

 

روش 1:  تاریخ ورودی  از پیش تعریف شده

در این مثال، به جای گرفتن ورودی از کاربر، یک تاریخ (DOB) در کد ارائه کرده ایم:


<script> 
var dob = new Date("06/24/2008"); 
//calculate month difference from current date in time 
var month_diff = Date.now() - dob.getTime(); 

//convert the calculated difference in date format 
var age_dt = new Date(month_diff); 

//extract year from date 
var year = age_dt.getUTCFullYear(); 

//now calculate the age of the user 
var age = Math.abs(year - 1970); 

//display the calculated age 
document.write("Age of the date entered: " + age + " years"); 
</script>

 

 

 خروجی :

Age of the date entered: 12 years

 

روش 2: تاریخ ورودی دینامیک یا پویا

در این مثال، یک فرم HTML ایجاد می کنیم تا ورودی تاریخ را از کاربر بگیریم و سپس با استفاده از جاوا اسکریپت، سن را محاسبه کنیم.

ورودی پویا را از کاربر می گیرد. این فرم HTML از تقویم برای انتخاب ورودی تاریخ استفاده می کند. کد زیر را کپی کنید:

 

<html>
<head>
<script>
function ageCalculator() {
var userinput = document.getElementById("DOB").value;
var dob = new Date(userinput);
if(userinput==null || userinput=='') {
document.getElementById("message").innerHTML = "**Choose a date please!";
return false;
} else {

//calculate month difference from current date in time
var month_diff = Date.now() - dob.getTime();

//convert the calculated difference in date format
var age_dt = new Date(month_diff);

//extract year from date
var year = age_dt.getUTCFullYear();

//now calculate the age of the user
var age = Math.abs(year - 1970);

//display the calculated age
return document.getElementById("result").innerHTML =
"Age is: " + age + " years. ";
}
}
</script>
</head>
<body>
<center>
<h2 style="color: 32A80F" align="center"> Calculate Age from Date of Birth <br> <br> </h2>

<!-- Choose a date and enter in input field -->
<b> Enter Date of Birth: <input type=date id = DOB> </b>
<span id = "message" style="color:red"> </span> <br><br>

<!-- Choose a date and enter in input field -->
<button type="submit" onclick = "ageCalculator()"> Calculate age </button> <br><br>
<h3 style="color:32A80F" id="result" align="center"></h3>
</center>
</body>
</html>


خروجی:

با اجرای کد بالا یک فرم HTML ظاهر می شود. در اینجا یک تاریخ (تاریخ تولد) را از تقویم انتخاب کنید و بر روی دکمه محاسبه سن (Calculate Age ) کلیک کنید تا سن از تاریخ تولد ارائه شده محاسبه شود:

سن در جاوا اسکریپت

 

اگر روی محاسبه سن با انتخاب تاریخ کلیک کنید، خطا نشان می دهد.

توجه: هنگام تست این برنامه این نکته را در نظر داشته باشید که تاریخ باید کمتر از تاریخ فعلی سیستم باشد.

 

سن در جاوا اسکریپت

 

در این اسکرین شات می بینید که در قسمت ورودی تاریخ “12-06-2012” را ارائه کرده ایم و  پس از محاسبه سن به نتیجه می رسیم.

یادداشت مهم:
توجه داشته باشید که ما سن را فقط در سال هایی مانند 8 سال، 9 سال محاسبه کرده ایم، اما نه مانند 8 سال 5 ماه و 23 روز. بنابراین، اکنون با جزئیات محاسبه خواهیم کرد.

 

 

روش 3: محاسبه سن بر حسب سال، ماه و روز

این مثال سن را بر حسب سال، ماه و روز محاسبه و نمایش می دهد و نه تنها به سال.

به عنوان مثال، برای DOB 27 دسامبر 2015، فرد 4 سال، 9 ماه و 23 روز خواهد داشت.

 

کد زیر را کپی کنید:

<html>  

<head>  

<script>  

  

function ageCalculator() {  

    //collect input from HTML form and convert into date format  

    var userinput = document.getElementById("DOB").value;  

    var dob = new Date(userinput);  

      

    //check user provide input or not  

    if(userinput==null || userinput==''){  

      document.getElementById("message").innerHTML = "**Choose a date please!";    

      return false;   

    }   

      

    //execute if the user entered a date   

    else {  

    //extract the year, month, and date from user date input  

    var dobdobYear = dob.getYear();  

    var dobdobMonth = dob.getMonth();  

    var dobdobDate = dob.getDate();  

      

    //get the current date from the system  

    var now = new Date();  

    //extract the year, month, and date from current date  

    var currentYear = now.getYear();  

    var currentMonth = now.getMonth();  

    var currentDate = now.getDate();  

      

    //declare a variable to collect the age in year, month, and days  

    var age = {};  

    var ageString = "";  

    

    //get years  

    yearAge = currentYear - dobYear;  

      

    //get months  

    if (currentMonth >= dobMonth)  

      //get months when current month is greater  

      var monthAge = currentMonth - dobMonth;  

    else {  

      yearAge--;  

      var monthAge = 12 + currentMonth - dobMonth;  

    }  

  

    //get days  

    if (currentDate >= dobDate)  

      //get days when the current date is greater  

      var dateAge = currentDate - dobDate;  

    else {  

      monthAge--;  

      var dateAge = 31 + currentDate - dobDate;  

  

      if (monthAge < 0) {  

        monthAge = 11;  

        yearAge--;  

      }  

    }  

    //group the age in a single variable  

    age = {  

    years: yearAge,  

    months: monthAge,  

    days: dateAge  

    };  

        

        

    if ( (age.years > 0) && (age.months > 0) && (age.days > 0) )  

       ageageString = age.years + " years, " + age.months + " months, and " + age.days + " days old.";  

    else if ( (age.years == 0) && (age.months == 0) && (age.days > 0) )  

       ageString = "Only " + age.days + " days old!";  

    //when current month and date is same as birth date and month  

    else if ( (age.years > 0) && (age.months == 0) && (age.days == 0) )  

       ageageString = age.years +  " years old. Happy Birthday!!";  

    else if ( (age.years > 0) && (age.months > 0) && (age.days == 0) )  

       ageageString = age.years + " years and " + age.months + " months old.";  

    else if ( (age.years == 0) && (age.months > 0) && (age.days > 0) )  

       ageageString = age.months + " months and " + age.days + " days old.";  

    else if ( (age.years > 0) && (age.months == 0) && (age.days > 0) )  

       ageageString = age.years + " years, and" + age.days + " days old.";  

    else if ( (age.years == 0) && (age.months > 0) && (age.days == 0) )  

       ageageString = age.months + " months old.";  

    //when current date is same as dob(date of birth)  

    else ageString = "Welcome to Earth! <br> It's first day on Earth!";   

  

    //display the calculated age  

    return document.getElementById("result").innerHTML = ageString;   

               

  }  

}  

</script>  

</head>  

<body>  

<center>  

<h2 style="color: 32A80F" align="center"> Calculate Age from Date of Birth <br> <br> </h2>   

  

<b> Enter Date of Birth: <input type=date id = DOB>  </b>  

<span id = "message" style="color:red"> </span> <br><br>    

<button type="submit" onclick = "ageCalculator()"> Calculate age </button> <br><br>  

<h3 style="color:32A80F" id="result" align="center"></h3>   

</center>  

</body>  

</html>

 

 

خروجی:

با اجرای کد بالا یک فرم HTML ظاهر می شود. در اینجا یک تاریخ (تاریخ تولد) را از تقویم انتخاب کنید و بر روی دکمه محاسبه سن کلیک کنید تا سن از تاریخ تولد ارائه شده محاسبه شود:

سن در جاوا اسکریپت

 

اگر روی محاسبه سن با انتخاب تاریخ کلیک کنید، خطا نشان می دهد.

ما خروجی های مختلفی را برای مقادیر ورودی تاریخ مختلف به شما نشان خواهیم داد.

خواهید دید که پاسخ به صورت سال، ماه و روز برگردانده می شود. خروجی را یکی یکی ببینید:

 

خروجی هنگام ورود یک تاریخ رندوم

سن در جاوا اسکریپت

 

ظاهر خروجی هنگام ورود تاریخی که ماه و تاریخ یکسانی دارد

سن در جاوا اسکریپت

 

خروجی هنگام ورود تاریخ فعلی

سن در جاوا اسکریپت

 

روش های مختلفی برای محاسبه سن وجود دارد. این یک مثال دیگر برای محاسبه سن در قالب سال، ماه و روز است.

 

 

روش 4: محاسبه سن با تبدیل اختلاف تاریخ به میلی ثانیه

در این مثال، ما سن را با تبدیل تفاوت تاریخ ها بر حسب میلی ثانیه محاسبه می کنیم. همچنین یک راه آسان برای محاسبه سن است.

کد زیر را کپی کنید:

<html>  

<head>  

<script>  

  

function ageCalculator() {  

    //collect input from HTML form and convert into date format  

    var userinput = document.getElementById("DOB").value;  

    var dob = new Date(userinput);  

      

    //check user provide input or not  

    if(userinput==null || userinput==''){  

      document.getElementById("message").innerHTML = "**Choose a date please!";    

      return false;   

    }   

      

    //execute if user entered a date   

    else {  

    //extract and collect only date from date-time string  

    var mdate = userinput.toString();  

    var dobYear = parseInt(mdate.substring(0,4), 10);  

    var dobMonth = parseInt(mdate.substring(5,7), 10);  

    var dobDate = parseInt(mdate.substring(8,10), 10);  

      

    //get the current date from system  

    var today = new Date();  

    //date string after broking  

    var birthday = new Date(dobYear, dobMonth-1, dobDate);  

      

    //calculate the difference of dates  

    var diffInMillisecond = today.valueOf() - birthday.valueOf();  

  

    //convert the difference in milliseconds and store in day and year variable          

    var year_age = Math.floor(diffInMillisecond / 31536000000);  

    var day_age = Math.floor((diffInMillisecond % 31536000000) / 86400000);  

  

    //when birth date and month is same as today's date        

    if ((today.getMonth() == birthday.getMonth()) && (today.getDate() == birthday.getDate())) {  

            alert("Happy Birthday!");  

        }  

          

     var month_age = Math.floor(day_age/30);          

     day_ageday_age = day_age % 30;  

          

     var tMnt= (month_age + (year_age*12));  

     var tDays =(tMnt*30) + day_age;  

       

    //DOB is greater than today's date, generate an error: Invalid date    

     if (dob>today) {  

        document.getElementById("result").innerHTML = ("Invalid date input - Please try again!");  

      }  

      else {  

        document.getElementById("result").innerHTML = year_age + " years " + month_age + " months " + day_age + " days"  

      }  

   }  

}  

</script>  

</head>  

<body>  

<center>  

<h2 style="color: #008CBA" align="center"> Calculate Age from Date of Birth <br> <br> </h2>   

  

<b> Enter Date of Birth: <input type=date id = DOB>  </b>  

<span id = "message" style="color:red"> </span> <br><br>    

<button type="submit" onclick = "ageCalculator()"> Calculate age </button> <br><br>  

<h3 style="color:#008CBA" id="result" align="center"></h3>   

</center>  

</body>  

</html>

 

خروجی

در خروجی زیر ببینید، سن برای تاریخ تولد معین 15-05-1986 ، 34 سال و 5 ماه و 17 روز است:

محاسبه ی سن

 

با وارد کردن تاریخ تولد بزرگتر از امروز، خطای Invalid date Input را نشان می دهد. خروجی زیر را ببینید:

سن در js

 

 

و کارمون تمومه! در این مقاله محاسبه سن در جاوا اسکریپت را به چهار روش ساده تا پیشرفته مورد بررسی قرار دادیم.

 

31رای - امتیاز 5 ممنون از امتیازی که دادید..!