-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
7u80
-
x86_64
-
windows_7
FULL PRODUCT VERSION :
1.7.0_80
1.7.0_55
ADDITIONAL OS VERSION INFORMATION :
Windows7 64 bit, Windows 2012 r2 64 bit, centos 64 bit
A DESCRIPTION OF THE PROBLEM :
Difference in currentTimezone and Gregorian calendar's timezone is 2 hours(for the below code).
Whenever we pass END_OF_DAY of DST + 2 hours to the below function it adds another day to the result.
Setting the hour should not change the date and in case it is changing the date, it should change for all days and not only for END_OF_DAY of DST.
Use the jvm arguments -Duser.timezone=PST while running.
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class Question {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
String dateInString = "06-11-2016 01:59:59";
Date date = sdf.parse(dateInString);
displayDates(date);
System.out.println("Next date");
dateInString = "09-11-2016 01:59:59";
date = sdf.parse(dateInString);
displayDates(date);
}
private static void displayDates(Date date){
Time timeOffSet = Time.valueOf("23:59:59");
TimeZone tz = TimeZone.getTimeZone("America/Adak");
GregorianCalendar destTzCal = new GregorianCalendar(tz);
destTzCal.setTimeInMillis(date.getTime());
System.out.println("Time before setting offset: " + destTzCal.getTime());
destTzCal.set(Calendar.HOUR_OF_DAY, timeOffSet.getHours());
System.out.println("Time after setting offset: " + destTzCal.getTime());
}
}
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
as per description
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Time before setting offset: Sun Nov 01 01:59:59 PST 2015
Time after setting offset: Mon Nov 01 01:59:59 PST 2015
Next date
Time before setting offset: Wed Nov 09 01:59:59 PST 2016
Time after setting offset: Wed Nov 09 01:59:59 PST 2016
ACTUAL -
Time before setting offset: Sun Nov 01 01:59:59 PST 2015
Time after setting offset: Mon Nov 02 01:59:59 PST 2015
Next date
Time before setting offset: Wed Nov 09 01:59:59 PST 2016
Time after setting offset: Wed Nov 09 01:59:59 PST 2016
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
Use the jvm arguments -Duser.timezone=PST while running.
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class Question {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
String dateInString = "06-11-2016 01:59:59";
Date date = sdf.parse(dateInString);
displayDates(date);
System.out.println("Next date");
dateInString = "09-11-2016 01:59:59";
date = sdf.parse(dateInString);
displayDates(date);
}
private static void displayDates(Date date){
Time timeOffSet = Time.valueOf("23:59:59");
TimeZone tz = TimeZone.getTimeZone("America/Adak");
GregorianCalendar destTzCal = new GregorianCalendar(tz);
destTzCal.setTimeInMillis(date.getTime());
System.out.println("Time before setting offset: " + destTzCal.getTime());
destTzCal.set(Calendar.HOUR_OF_DAY, timeOffSet.getHours());
System.out.println("Time after setting offset: " + destTzCal.getTime());
}
}
---------- END SOURCE ----------
1.7.0_80
1.7.0_55
ADDITIONAL OS VERSION INFORMATION :
Windows7 64 bit, Windows 2012 r2 64 bit, centos 64 bit
A DESCRIPTION OF THE PROBLEM :
Difference in currentTimezone and Gregorian calendar's timezone is 2 hours(for the below code).
Whenever we pass END_OF_DAY of DST + 2 hours to the below function it adds another day to the result.
Setting the hour should not change the date and in case it is changing the date, it should change for all days and not only for END_OF_DAY of DST.
Use the jvm arguments -Duser.timezone=PST while running.
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class Question {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
String dateInString = "06-11-2016 01:59:59";
Date date = sdf.parse(dateInString);
displayDates(date);
System.out.println("Next date");
dateInString = "09-11-2016 01:59:59";
date = sdf.parse(dateInString);
displayDates(date);
}
private static void displayDates(Date date){
Time timeOffSet = Time.valueOf("23:59:59");
TimeZone tz = TimeZone.getTimeZone("America/Adak");
GregorianCalendar destTzCal = new GregorianCalendar(tz);
destTzCal.setTimeInMillis(date.getTime());
System.out.println("Time before setting offset: " + destTzCal.getTime());
destTzCal.set(Calendar.HOUR_OF_DAY, timeOffSet.getHours());
System.out.println("Time after setting offset: " + destTzCal.getTime());
}
}
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
as per description
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Time before setting offset: Sun Nov 01 01:59:59 PST 2015
Time after setting offset: Mon Nov 01 01:59:59 PST 2015
Next date
Time before setting offset: Wed Nov 09 01:59:59 PST 2016
Time after setting offset: Wed Nov 09 01:59:59 PST 2016
ACTUAL -
Time before setting offset: Sun Nov 01 01:59:59 PST 2015
Time after setting offset: Mon Nov 02 01:59:59 PST 2015
Next date
Time before setting offset: Wed Nov 09 01:59:59 PST 2016
Time after setting offset: Wed Nov 09 01:59:59 PST 2016
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
Use the jvm arguments -Duser.timezone=PST while running.
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class Question {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
String dateInString = "06-11-2016 01:59:59";
Date date = sdf.parse(dateInString);
displayDates(date);
System.out.println("Next date");
dateInString = "09-11-2016 01:59:59";
date = sdf.parse(dateInString);
displayDates(date);
}
private static void displayDates(Date date){
Time timeOffSet = Time.valueOf("23:59:59");
TimeZone tz = TimeZone.getTimeZone("America/Adak");
GregorianCalendar destTzCal = new GregorianCalendar(tz);
destTzCal.setTimeInMillis(date.getTime());
System.out.println("Time before setting offset: " + destTzCal.getTime());
destTzCal.set(Calendar.HOUR_OF_DAY, timeOffSet.getHours());
System.out.println("Time after setting offset: " + destTzCal.getTime());
}
}
---------- END SOURCE ----------
- duplicates
-
JDK-8132357 Last day of Daylight saving gives incorrect value while setting hour
-
- Closed
-
-
JDK-8132357 Last day of Daylight saving gives incorrect value while setting hour
-
- Closed
-