Я тестирую фрагмент JavaScript для сайта, в котором я хочу его использовать. В основном, когда страница загружает функцию, выполняемую моим возрастом. Я делаю это с установленной даты рождения. Я заметил ошибку при игре с переменной birthDate (точно не знаю, почему это происходит). Моя ошибка происходит, когда месяц рождения месяца меньше, чем в текущем месяце, и день по крайней мере на один больше, чем текущий день, вплоть до текущей даты (Пример: сегодняшняя дата 8 июня, что-то с 9 мая по 8 июня) ошибка)День рождения, показанный как возраст предыдущего года?
Для фрагмента я вступил в дату рождения 5-9-1989. Теперь, когда вы или я делаем математику, мы оба знаем, что на основе сегодняшней даты 6-8-2015. Возраст должен быть 26. Но по какой-то причине код выплескивает номер 25, как показано ниже.
(Примечание: до тех пор, пока переменная ввода birthDate месяца не будет меньше текущего месяца, а день будет по крайней мере на один больше, чем текущий день, ошибка будет проходить год не имеет значения. позже или раньше, чем месяц - 1 и день + n (n> 0) до даты, когда ошибка не возникает)
Любая помощь в выяснении причины возникновения этой ошибки будет очень полезна.
function myage() {
var birthDate = new Date(1989, 5, 9, 0, 0, 0, 0)
// The current date
var currentDate = new Date();
// The age in years
var age = currentDate.getFullYear() - birthDate.getFullYear();
// Compare the months
var month = currentDate.getMonth() - birthDate.getMonth();
// Compare the days
var day = currentDate.getDate() - birthDate.getDate();
// If the date has already happened this year
if (month < 0 || month == 0 && day < 0 || month < 0 && day < 0)
{
age--;
}
document.write('I am ' + age + ' years old.');
}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body onLoad="myage()">
</body>
</html>
Спасибо за это объяснение. Думаю, мой мозг не думал о том, что его сначала можно рассматривать как массив. Но теперь это имеет смысл – Nalani