Last active
May 17, 2023 19:07
-
-
Save artpi/05cfdd87e31127171a54186d841ce648 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// https://piszek.com/2013/03/13/walidacja-numeru-pesel-w-javascript/ | |
// Funkcja dekodujaca nr. Pesel | |
function peselDecode(pesel) { | |
// Wycinamy daty z numeru | |
var rok = parseInt(pesel.substring(0, 2), 10); | |
var miesiac = parseInt(pesel.substring(2, 4), 10) - 1; | |
var dzien = parseInt(pesel.substring(4, 6), 10); | |
// Pesel został wprowadzony w 20 wieku, ale zawiera modyfikatory na przysłość | |
// Miesiąc zawiera dodatkowe liczby dla dat z przyszłości. | |
if (miesiac > 80) { | |
rok = rok + 1800; | |
miesiac = miesiac - 80; | |
} else if (miesiac >= 60) { | |
rok = rok + 2200; | |
miesiac = miesiac - 60; | |
} else if (miesiac >= 40) { | |
rok = rok + 2100; | |
miesiac = miesiac - 40; | |
} else if (miesiac >= 20) { | |
rok = rok + 2000; | |
miesiac = miesiac - 20; | |
} else { | |
rok += 1900; | |
} | |
if( miesiac >=0 && miesiac < 12 && dzien > 0 && dzien < 32 ) { | |
// Daty sa ok. Teraz ustawiamy. | |
var urodzony = new Date(); | |
urodzony.setFullYear(rok, miesiac, dzien); | |
} else { | |
var urodzony = false; | |
} | |
//plec | |
var plec; | |
if (parseInt(pesel.substring(9, 10), 10) % 2 === 1) { | |
plec = 'm'; | |
} else { | |
plec = 'k'; | |
} | |
return { | |
sex: plec, | |
date: urodzony, | |
}; | |
} | |
// Metoda weryfikacji na podstawie przypisanych wag. | |
function checkPeselWithWeights( pesel ) { | |
var wagi = [9, 7, 3, 1, 9, 7, 3, 1, 9, 7]; | |
var suma = 0; | |
for (var i = 0; i < wagi.length; i++) { | |
suma += (parseInt(pesel.substring(i, i + 1), 10) * wagi[i]); | |
} | |
suma = suma % 10; | |
return (suma === parseInt(pesel.substring(10, 11), 10)); | |
} | |
// Metoda weryfikacji za pomocą sumy kontrolnej | |
function checkPeselWithControlSum(pesel) { | |
var tabnr = '1379137913'; | |
var suma = 0; | |
var result = false; | |
if (pesel.length == 11) { | |
for (var i = 0; i < tabnr.length; i++) { | |
suma = suma + parseInt(tabnr.charAt(i), 10) * parseInt(pesel.charAt(i), 10); | |
} | |
var modu = suma % 10; | |
if (modu == 0) | |
result = (0 == parseInt(pesel.charAt(10), 10)); | |
else | |
result = ((10 - modu) == parseInt(pesel.charAt(10), 10)); | |
} else { | |
return false; | |
} | |
return result; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
maly blad sie tam przydarzył dla ludzi urodzinych w styczniu
np pesel 06210311097
linia 7 var miesiac = parseInt(pesel.substring(2, 4), 10) - 1;
powina wygladac: var miesiac = parseInt(pesel.substring(2, 4), 10)
a liinia 30 urodzony.setFullYear(rok, miesiac, dzien);
tak: urodzony.setFullYear(rok, miesiac -1, dzien);