A npm package for validating and deriving information from Czech and Slovak National Identification Number. This number is used in Czech and Slovak Republic as the primary unique identifier for every person by most, if not all, government institutions, banks, etc. It consists of two parts: birth date (with gender mark) and serial number with check digit. It is commonly known as Birth Number or rodné číslo in both Czech and Slovak hence the library name.
If you want.

Works with nodejs v10 and higer (ES2015).
npm install rodnecislo
import { rodnecislo } from 'rodnecislo';
// let { rodnecislo } = require("rodnecislo")
let rc = rodnecislo('111213/3121')
rc.isMale() // true
rc.isFemale() // false
rc.year() // 2011
rc.month() // 11 - zero based month
rc.day() // 13
rc.birthDate() // new Date(2011, 11, 13) - "Tue Dec 13 2011 00:00:00 GMT+0100 (CET)"
rc.birthDateAsString() // "13.12.2011" - the Czech date format
rc.isValid() // true
rc.isPossible() // true (valid, but maybe in the future)
rc.isAdult() // false - by default checks if current date is above 18 years old
rc.isAdult(21) // false - for US
rc.age() // 5 - age today (it is 5.6.2017 ;)
rc.dic() // "CZ1112133121" - Czech Tax Identification Number (DIč)
Before 1953
yymmdd/sssmm+50sss is serial number for people born on the same day516231/016 is birth number of a female, born on 31 Dec 1951After 1953
yymmdd/ssscmm+50(yymmddsss % 11 == 10 && c == 0) then the birth number is validAfter 1985
(yymmddsss % 11 == 10 && c == 0) exception was removedIn 1993 Czechoslovakia split into Czech Republic and Slovak Republic
After 2004
mm+20mm+70Short/long version
yy >= 54 THEN yyyy = 19yyyy < 53 THEN yyyy = 20yyMonth/Gender
51-62 OR 71-82 - female, subtract 50 and 70 respectively01-12 OR 21-32 - male, subtract 20Modulo condition
11 equals 10 AND check digit is 0 AND year is 54-85 - valid birth numberAccording to Civil code §601 law n. 89/2012 and §30 of New Civil Code an age is reached at midnight which is starting the birthday. So on the first seconds of your 18th birthday you can start drinking in Czech.
In Czech the personal VAT Identification Number
is derived from Birth Number by adding CZ prefix and ommitting the slash.
It is called Daňové identifikační číslo (DIČ)
hence the .dic() method.
Specification comes mainly from following links:
RegExp for rodné číslo. With/without slash.
| 1 | 2a | 2b | 2c | 2d | 3 |4 | 5 |
/^\d{0,2}((0[1-9]|1[0-2])|(2[1-9]|3[0-2])|(5[1-9]|6[0-2])|(7[1-9]|8[0-2]))(0[1-9]|[1-2][0-9]|3[01])\/?[0-9]{3,4}$/;
Explanation:
yymm
ddxxxxJakub Podlaha j.podlaha@gmail.com
MIT : http://opensource.org/licenses/MIT
Don’t hesitate to let me know about errors and/or possible uselessnesses. I did this for my project first but would be glad if others find this useful.