javascript - Convert milliseconds to years -


i have validator checks if user @ least 18 years old.

this check:

        var res = /^([1-2]\d{3})\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])\-([0-9]{4})$/.exec(str);         var todays_date = new date();         var birth_date = null;          if (res != null) {             birth_date = new date(res[1], res[2], res[3]);             if (todays_date - birth_date > 565633905872) { 

565633905872 18 years in milliseconds. how convert years before can do

if (todays_date - birth_date => 18) { 

the number have quoted not number of milliseconds in 18 years. it's small if pretend there no leap years.

the simplest way test if @ least 18 years old initialise date object birthday, use .getfullyear() , .setfullyear() directly set year 18 years forward. compare current date.

note in js dates month zero-based, want use res[2] - 1 when creating date object.

birth_date = new date(res[1], res[2] - 1, res[3]); birth_date.setfullyear(birth_date.getfullyear() + 18); if (birth_date <= new date()) { 

or given constructing birth_date individual year, month , day do:

birthplus18 = new date(+res[1] + 18, res[2] - 1, res[3]); if (birthplus18 <= new date()) { 

(the leading + in +res[1] + 18 not typo, converts string extracted regex number can add 18 it. don't need same thing res[2] - 1 because - automatically converts both operands.)

note regex happily allow dates specify day high month, e.g., feb 30 or jun 31.


Comments

Popular posts from this blog

Android layout hidden on keyboard show -

google app engine - 403 Forbidden POST - Flask WTForms -

c - Why would PK11_GenerateRandom() return an error -8023? -