Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.05.2013, 17:06
Интересующийся
Отправить личное сообщение для d00ker Посмотреть профиль Найти все сообщения от d00ker
 
Регистрация: 25.02.2013
Сообщений: 11

Вычисление возраста
У меня есть одностраничный сайт. Там есть блок с БИО, где указан мой возраст. Мне нужен такой скрипт, в котором я укажу дату своего рождения, а скрипт будет мне выводит мой текущий возраст. Как такое сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 19.05.2013, 17:28
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Чтобы получить количество лет на основе только года:
var get_current_age = function(date) {
  return new Date().getFullYear() - date;
};

alert(get_current_age(1986));
Ответить с цитированием
  #3 (permalink)  
Старый 19.05.2013, 17:36
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 19.05.2013, 17:36
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 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'));
Ответить с цитированием
  #5 (permalink)  
Старый 19.05.2013, 17:50
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 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.
Ответить с цитированием
  #6 (permalink)  
Старый 19.05.2013, 18:00
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

birth.setFullYear(year)

если birth будет 29 февраля, а year не высокосным?
Ответить с цитированием
  #7 (permalink)  
Старый 19.05.2013, 18:05
Интересующийся
Отправить личное сообщение для d00ker Посмотреть профиль Найти все сообщения от d00ker
 
Регистрация: 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 странице вывести?
Ответить с цитированием
  #8 (permalink)  
Старый 19.05.2013, 18:06
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 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.
Ответить с цитированием
  #9 (permalink)  
Старый 19.05.2013, 18:13
Интересующийся
Отправить личное сообщение для d00ker Посмотреть профиль Найти все сообщения от d00ker
 
Регистрация: 25.02.2013
Сообщений: 11

А 3 - 1 что значит? Точнее зачем 1 отнимаем?
Ответить с цитированием
  #10 (permalink)  
Старый 19.05.2013, 18:14
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Aetae,
хотя у тебя вообще не верно написано, смотри, ты birth устанавливаешь год, который от него же и взят, нужно брать год от todey, а так как возможна ситуация с 29 февраля, нужно вообще обоим датам любой высокосный год присваивать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку в скрипте расчета возраста человека Romkinss Events/DOM/Window 2 20.02.2012 15:58
Расчет возраста Tryman Общие вопросы Javascript 22 31.03.2011 17:26
Вычисление функции CBO9IK Элементы интерфейса 9 19.12.2010 09:43
Проверка возраста Johny jQuery 4 12.11.2010 16:25
Вычисление в строку lammeR Общие вопросы Javascript 4 06.06.2010 19:17