1 2 3 4 5 6 7 8 | SimpleDateFormat formatter = new SimpleDateFormat( "yyyyMMdd" ); Calendar date = Calendar.getInstance(TimeZone.getTimeZone( "Europe/London" )); date.set(Calendar.YEAR, 2011 ); date.set(Calendar.MONTH, 10 ); date.set(Calendar.DAY_OF_MONTH, 15 ); date.set(Calendar.HOUR_OF_DAY, 3 ); int aDateName = Integer.valueOf(formatter.format(date.getTime())); System.out.println(aDateName); |
I was expecting it to print 20111115 as the output.
However, the output was 20111114(when executing from US EST Timezone) - this is because I am transforming Calendar to a date using getTime() API, and as soon as I do this the timezone is set to UTC. The workaround is to somehow set the the timezone attribute at the point where it is printed back to a string, this can be done by setting the timezone attribute of SimpleDateFormat, otherwise it tends to format it based on the default timezone where the code is run -
This is what fixed the code for me:
However, the output was 20111114(when executing from US EST Timezone) - this is because I am transforming Calendar to a date using getTime() API, and as soon as I do this the timezone is set to UTC. The workaround is to somehow set the the timezone attribute at the point where it is printed back to a string, this can be done by setting the timezone attribute of SimpleDateFormat, otherwise it tends to format it based on the default timezone where the code is run -
This is what fixed the code for me:
1 2 3 | ..... formatter.setTimeZone(TimeZone.getTimeZone( "Europe/London" )); ..... |
No comments:
Post a Comment