@@ -80,10 +80,6 @@ public class Calendar extends Container implements ActionSource {
8080 private static final String [] MONTHS = new String []{"Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" , "Jul" , "Aug" , "Sep" , "Oct" , "Nov" , "Dec" };
8181 private static final String [] DAYS = {"Sunday" , "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" };
8282 private static final String [] LABELS = {"Su" , "M" , "Tu" , "W" , "Th" , "F" , "Sa" };
83- static final long MINUTE = 1000 * 60 ;
84- static final long HOUR = MINUTE * 60 ;
85- static final long DAY = HOUR * 24 ;
86- static final long WEEK = DAY * 7 ;
8783 private EventDispatcher dispatcher = new EventDispatcher ();
8884 private EventDispatcher dataChangedListeners = new EventDispatcher ();
8985 private EventDispatcher monthChangedListeners = new EventDispatcher ();
@@ -1047,19 +1043,15 @@ private void setCurrentDay(long day, boolean force) {
10471043 cal .set (java .util .Calendar .DAY_OF_MONTH , 1 );
10481044 long startDate = cal .getTime ().getTime ();
10491045 int dow = cal .get (java .util .Calendar .DAY_OF_WEEK );
1050- cal .setTime (new Date (cal .getTime ().getTime () - DAY ));
1051- cal .set (java .util .Calendar .HOUR , 1 );
1052- cal .set (java .util .Calendar .HOUR_OF_DAY , 1 );
1053- cal .set (java .util .Calendar .MINUTE , 0 );
1054- cal .set (java .util .Calendar .SECOND , 0 );
1055- cal .set (java .util .Calendar .MILLISECOND , 0 );
1046+ cal .setTime (new Date (cal .getTime ().getTime ()));
1047+ cal .add (java .util .Calendar .DAY_OF_MONTH , -1 );
10561048 int lastDay = cal .get (java .util .Calendar .DAY_OF_MONTH );
10571049 int i = 0 ;
10581050 if (dow > java .util .Calendar .SUNDAY ) {
10591051 //last day of previous month
10601052
10611053 while (dow > java .util .Calendar .SUNDAY ) {
1062- cal .setTime ( new Date ( cal . getTime (). getTime () - DAY ) );
1054+ cal .add ( java . util . Calendar . DAY_OF_MONTH , - 1 );
10631055 dow = cal .get (java .util .Calendar .DAY_OF_WEEK );
10641056 }
10651057 int previousMonthSunday = cal .get (java .util .Calendar .DAY_OF_MONTH );
@@ -1071,8 +1063,9 @@ private void setCurrentDay(long day, boolean force) {
10711063 }
10721064 //last day of current month
10731065 cal .set (java .util .Calendar .MONTH , (month + 1 ) % 12 );
1074- cal .set (java .util .Calendar .DAY_OF_MONTH , 1 );
1075- cal .setTime (new Date (cal .getTime ().getTime () - DAY ));
1066+ while (cal .get (java .util .Calendar .MONTH ) != month ) {
1067+ cal .add (java .util .Calendar .DAY_OF_MONTH , -1 );
1068+ }
10761069
10771070 lastDay = cal .get (java .util .Calendar .DAY_OF_MONTH );
10781071
@@ -1099,7 +1092,9 @@ private void setCurrentDay(long day, boolean force) {
10991092 }
11001093 }
11011094 updateButtonDayDate (components [j ], yearNew , month , j - i + 1 );
1102- startDate += DAY ;
1095+ cal .setTime (new Date (startDate ));
1096+ cal .add (java .util .Calendar .DAY_OF_MONTH , 1 );
1097+ startDate = cal .getTime ().getTime ();
11031098 }
11041099 int d = 1 ;
11051100 for (; j < components .length ; j ++) {
@@ -1156,16 +1151,12 @@ private void setMonth(int year, int month) {
11561151 cal .set (java .util .Calendar .DAY_OF_MONTH , 1 );
11571152 cal .set (java .util .Calendar .YEAR , year );
11581153
1159- Date date = cal .getTime ();
1160- long d = date .getTime ();
1161-
11621154 // if this is past the last day of the month (e.g. going from January 31st
1163- // to Febuary ) we need to decrement the day until the month is correct
1155+ // to February ) we need to decrement the day until the month is correct
11641156 while (cal .get (java .util .Calendar .MONTH ) != month ) {
1165- d -= DAY ;
1166- cal .setTime (new Date (d ));
1157+ cal .add (java .util .Calendar .DAY_OF_MONTH , -1 );
11671158 }
1168- setCurrentDay (d );
1159+ setCurrentDay (cal . getTime (). getTime () );
11691160 }
11701161
11711162 public void decrementMonth () {
0 commit comments