19.05.2013, 17:06
|
Интересующийся
|
|
Регистрация: 25.02.2013
Сообщений: 11
|
|
Вычисление возраста
У меня есть одностраничный сайт. Там есть блок с БИО, где указан мой возраст. Мне нужен такой скрипт, в котором я укажу дату своего рождения, а скрипт будет мне выводит мой текущий возраст. Как такое сделать?
|
|
19.05.2013, 17:28
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Чтобы получить количество лет на основе только года:
var get_current_age = function(date) {
return new Date().getFullYear() - date;
};
alert(get_current_age(1986));
|
|
19.05.2013, 17:36
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
/**
* @param {Date|Number} birthDate
*
* @returns {Number}
*/
function birthDateToAge(birthDate) {
birthDate = new Date(birthDate);
var now = new Date(),
age = now.getFullYear() - birthDate.getFullYear();
return now.setFullYear(1972) < birthDate.setFullYear(1972) ? age - 1 : age;
}
Последний раз редактировалось Riim, 19.05.2013 в 17:38.
|
|
19.05.2013, 17:36
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
На основе полной даты:
function get_current_age(date) {
return ((new Date().getTime() - new Date(date)) / (24 * 3600 * 365.25 * 1000)) | 0;
}
alert(get_current_age('1986-09-18'));
|
|
19.05.2013, 17:50
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
<script>
var birth = new Date(1990, 3 - 1, 16); //дата рождения
var year = birth.getFullYear();
var today = new Date();
document.write( today.getFullYear() - year - (today.getTime() < birth.setFullYear(year)) )
</script>
Дата рождения указывается в следующем порядке: год, месяц, день, час, минута, секунда, милисекунда. Всё кроме года можно пр желании опустить. Месяц отсчитывается с нуля (0-11).
Сообщение от monolithed
|
На основе полной даты:
|
Это приблизительно же =\
__________________
29375, 35
Последний раз редактировалось Aetae, 19.05.2013 в 17:53.
|
|
19.05.2013, 18:00
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
birth.setFullYear(year)
если birth будет 29 февраля, а year не высокосным?
|
|
19.05.2013, 18:05
|
Интересующийся
|
|
Регистрация: 25.02.2013
Сообщений: 11
|
|
Сообщение от Aetae
|
<script>
var birth = new Date(1990, 3 - 1, 16); //дата рождения
var year = birth.getFullYear();
var today = new Date();
document.write( today.getFullYear() - year - (today.getTime() < birth.setFullYear(year)) )
</script>
Дата рождения указывается в следующем порядке: год, месяц, день, час, минута, секунда, милисекунда. Всё кроме года можно пр желании опустить. Месяц отсчитывается с нуля (0-11).
Это приблизительно же =\
|
Если я это запихаю в main.js , как мне это потом на html странице вывести?
|
|
19.05.2013, 18:06
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
Сообщение от Riim
|
birth.setFullYear(year)
если birth будет 29 февраля, а year не высокосным?
|
Если дата рожения указана с точностью до дня - то проблем не будет, т.к. будет учитываться только то, что 28ое закончилось. А вот если будут указаны часы то сравнение 29ого будет идти с первым числом и тогда действительно в случае с днём рождения 29 февраля и датой выполнения скрипта 1 марта не високосного - будет косяк. Твой вариант вернее.)
Сообщение от d00ker
|
Если я это запихаю в main.js , как мне это потом на html странице вывести?
|
Используйте вариант от Riim. Его функция на вход принимает дату в том формате что у меня birth.
Для вывода в нужном месте страницы добавьте:
<script>document.write( birthDateToAge(new Date(1990, 3 - 1, 16)) )</script>
Если нужен вывод конкретно из скрипта - выводите также как и всё остальное, что вы выводите из скрипта: мы не знаем что у вас там и как.
__________________
29375, 35
Последний раз редактировалось Aetae, 19.05.2013 в 18:12.
|
|
19.05.2013, 18:13
|
Интересующийся
|
|
Регистрация: 25.02.2013
Сообщений: 11
|
|
А 3 - 1 что значит? Точнее зачем 1 отнимаем?
|
|
19.05.2013, 18:14
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Aetae,
хотя у тебя вообще не верно написано, смотри, ты birth устанавливаешь год, который от него же и взят, нужно брать год от todey, а так как возможна ситуация с 29 февраля, нужно вообще обоим датам любой высокосный год присваивать.
|
|
|
|