Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2015, 12:24   #1
Fordros
Пользователь
 
Регистрация: 26.06.2012
Сообщений: 89
По умолчанию Извлечение даты рождения из ИНН (для Украины)

Добрый день, уважаемые форумчане!
Хочется решить одну задачку, но ввиду того что мои познания в данном языке равны базовым понятиям и не более, сам осилить не могу. Пролопатил не мало трафика в сети и так ничего не нашел(((

Суть - есть форма на веб-морде в которую вводится ИНН клиента, этот ИНН проверяется на контрольное число посредством JS (нашел пример в нете и переделал под алгоритм актуальный для Украины). Так вот, хочется что бы при успешной валидации ИНН, дата рождения извлекалась из ИНН и вносилась автоматом в следующий input в формате ДД/ММ/ГГГГ

уть метода извлечения даты - первые 5 цифр в ИНН у обычных граждан Украины означают дату рождения, в виде кол-ва дней от 1 янв 1900г.
Код который использую для проверки кода:
Код:
function clickClSSNumber()
{
		ssNumber = d.MainForm.clSSnumber.value;
        ssNumber = ssNumber.split('');
		if(ssNumber.length < 10) 
		return false;
		else if ((ssNumber[9] == ((-1 * ssNumber[  0] + 5 * ssNumber[1] + 7 * ssNumber[2] + 9 * ssNumber[3] + 4 * ssNumber[4] + 6 * ssNumber[5] + 10 * ssNumber[6] + 5 * ssNumber[7] + 7 * ssNumber[8]) % 11) % 10)){
			d.MainForm.clSSnumber.style.backgroundColor = '#dfd';     
		}else{
			d.MainForm.clSSnumber.style.backgroundColor = '#fdd';
			alert('Проверьте корректность ИНН!');}
	ssNumber = d.MainForm.clSSnumber.value;
    if (ssNumber!="" && ssNumber.substr(0,3)!="999")
    	return true;/*d.MainForm.clSSnumberCheck.disabled = true;*/
	else
       	return false;/*d.MainForm.clSSnumberCheck.disabled = false;*/
}
Заранее благодарен за участие!

Последний раз редактировалось Вадим Мошев; 26.09.2019 в 16:40.
Fordros вне форума Ответить с цитированием
Старый 26.03.2015, 21:33   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Загугли метод .substring() и будет тебе счастье)
п.с. Сала украини!
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 27.03.2015, 08:09   #3
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Я боюсь у автора другие немного вопросы..

Цитата:
первые 5 цифр в ИНН у обычных граждан Украины означают дату рождения, в виде кол-ва дней от 1 янв 1900г
Цитата:
дата рождения извлекалась из ИНН и вносилась автоматом в следующий input в формате ДД/ММ/ГГГГ
есть у него предположим число 3876 - это кол-во дней ее в дату рождения нужно, интересно високосный день учитывать а поправку на 4 секунды?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 27.03.2015, 10:23   #4
Fordros
Пользователь
 
Регистрация: 26.06.2012
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
есть у него предположим число 3876 - это кол-во дней ее в дату рождения нужно, интересно високосный день учитывать а поправку на 4 секунды?
Число всегда состоит из 5 цифр, например 33858 - если к этому числу приплюсовать 1 (обычное математическое сложение) и это число вбить в ячейку экселя и присвоить формат даты, то получим 12.09.1992 (эксель начинает отсчет именно с 01.01.1900, но он не знает что 1900 год был высокосным). А вот как это сделать на яваскрипте?
Высокосный год считается, а вот поправка в 4 секунды скорее всего нет...
Fordros вне форума Ответить с цитированием
Старый 27.03.2015, 10:29   #5
Fordros
Пользователь
 
Регистрация: 26.06.2012
Сообщений: 89
Плохо

Цитата:
Сообщение от Naive Посмотреть сообщение
Загугли метод .substring() и будет тебе счастье)
п.с. Сала украини!
Метод substring возвращает подстроку, начиная с позиции indexA до, но не включая indexB. Таким образом я могу только получить нужные мне 5 цифр из 10, но не высчитать нужную дату и преобразовать в необходимый формат...
Постскриптум заслуживающий "уважения"...
Fordros вне форума Ответить с цитированием
Старый 27.03.2015, 10:36   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Постскриптум заслуживающий "уважения"...
за неуместный постскриптум форумчанин уже получил красную карточку.
Прошу этот вопрос в теме больше не развивать.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.03.2015, 10:40   #7
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от Fordros Посмотреть сообщение
Число всегда состоит из 5 цифр, например 33858 - если к этому числу приплюсовать 1 (обычное математическое сложение) и это число вбить в ячейку экселя и присвоить формат даты, то получим 12.09.1992.

По идеи это не должно быть сложно если 33859 дней разделить на 365 дней получим 92.76 уже похоже на 92 год начиная с 1900, если будет время попробую что нибудь навоять
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 27.03.2015, 10:57   #8
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Не дал мне вопрос покоя.

Код:
<input type="button" value="пример" onclick="calc()">
<script>
function calc() {
  var D = new Date(1900,01,01);
  D.setDate(D.getDate() + 33858);
  alert(D);
}
</script>
Этот код вернет Вторник 15 октября 1992 года
развязка близка полагаю нужно вводить поправку на високосный год. Включайтесь форумчане !

набегает лишний месяц. Автор дай еще примеры чисел.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 27.03.2015 в 11:15.
Stanislav вне форума Ответить с цитированием
Старый 27.03.2015, 11:49   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

может так?

Код:
<script>
  var unix_timestamp = (33858  - 25568) * 86400;
  var date = new Date(unix_timestamp*1000);
  alert(date);
</script>
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.03.2015, 11:55   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,543
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
развязка близка полагаю нужно вводить поправку на високосный год. Включайтесь форумчане !

набегает лишний месяц. Автор дай еще примеры чисел.
Date сам учтет високосные года. Проблема в том, что в Date месяц считается от 0, а не от 1.
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение даты рождения в БД kuba1981 PHP 6 07.01.2013 18:46
Проверка даты рождения относительно текущей. siteograf PHP 3 16.07.2010 03:45
Извлечение из даты дня недели Kesha_pptp PHP 5 27.02.2010 22:21
Самостоятельное именение даты рождения Alar О форуме и сайтах клуба 0 16.11.2009 17:11
Вывести даты рождения лежащие в интервале XuTpbIu SQL, базы данных 5 25.03.2009 16:47