| 
	| 
	
	| 
		
	| 
			
			 
			
				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,601
					 
		
 |  |  
	| 
<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,601
					 
		
 |  |  
	| 
	
 
	| Сообщение от 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 февраля, нужно вообще обоим датам любой высокосный год присваивать.
 |  |  |  |