javascript - Why is .setUTCFullYear() and .setUTCMonth() return different results -
in sample code convert string date:
function stringtodate(){   var edate = "2015-06-01";   logger.log(edate);   var input = edate.split('-');    var date = new date();   date.setutcfullyear(input[0],input[1] - 1,input[2]);   logger.log(date); }   logging date returns "mon jun 01 20:07:45 gmt+01:00 2015", correct, month '06' - 1 = 5 corresponds month of june this.
however, identical function:
function stringtodate2(){   var edate = "2015-06-01";   logger.log(edate);   var input = edate.split('-');     var date = new date();    date.setutcfullyear(input[0]);   date.setutcmonth(input[1] - 1);   date.setutcdate(input[2]);   logger.log(date); }   returns "wed jul 01 20:10:04 gmt+01:00 2015". other values return equally screwy results. why different result 'setutcmonth' 'setutcfullyear'?
set date before month
date.setutcfullyear(input[0]); date.setutcdate(input[2]); date.setutcmonth(input[1] - 1);   https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/date/setutcmonth
if parameter specify outside of expected range, setutcmonth() attempts update date information in date object accordingly. example, if use 15 monthvalue, year incremented 1, , 3 used month.
each of utc functions has similar note out of range values.
so because of this:
new date() gets current date, , today being 5/31 date 31. 
there months without 31st date, 31 outside range date updated accordingly.
so if try set month february without changing date first, date 2/31/2015, february has 28 days year rolls on 3/03/2015
and in case, if try set june, 6/31/2015, june never has 31st date again rolls on 7/01/2015. , on.
so change date first show above or set default date when create it:
new date("01/01/2015")      
Comments
Post a Comment