جدول محتوایی
آموزش محاسبه سن در جاوا اسکریپت
جاوا اسکریپت برخی از توابع داخلی و تاریخ را ارائه می دهد که به محاسبه سن از تاریخ (تاریخ تولد) کمک می کند. با استفاده از این روش های جاوا اسکریپت، به راحتی می توانید سن هر کسی را پیدا کنید. برای محاسبه سن در جاوا اسکریپت، ما به ورودی تاریخ از کاربر و تاریخ فعلی سیستم نیاز داریم. هنگام محاسبه تفاوت بین آنها باید شرایط زیر را در نظر داشته باشیم:
- اگر تاریخ فعلی کمتر از تاریخ (تاریخ تولد) وارد شده توسط کاربر باشد، آن ماه به عنوان ماه کامل نشده محاسبه نخواهد شد. در غیر این صورت، تعداد روزهای ماه (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 را نشان می دهد. خروجی زیر را ببینید:
و کارمون تمومه! در این مقاله محاسبه سن در جاوا اسکریپت را به چهار روش ساده تا پیشرفته مورد بررسی قرار دادیم.