i'll using mm/dd/yyyy format below code should give me "07/01/2017" instead giving me "06/30/2017" if uncomment //cal.gettime(); i'm getting "07/01/2017"
can explain behaviour.
public static void main(string[] args) { calendar cal = calendar.getinstance(); date date = new date("04/02/2017"); cal.settime(date); system.out.println(date); calendar nqtstartdate = new gregoriancalendar(cal.get(calendar.year), calendar.june, 30); cal = nqtstartdate; //cal.gettime(); cal.set(calendar.day_of_week, calendar.saturday); system.out.println(cal.gettime()); }
when call gettime() method internally update time , change state of variable istimeset (which, see reading source code, makes class not thread safe).
public long gettimeinmillis() { if (!istimeset) { updatetime(); } return time; } on other hand statement cal.set(calendar.day_of_week, calendar.saturday) reset state of internal time (changing variable istimeset false).
the state of variable istimeset true if value of internal time valid.
just summarise: not change calendar configuration (i.e. set day of week) after have called gettime() method because reset internal status of calendar.
Comments
Post a Comment