[
https://issues.apache.org/jira/browse/DIRAPI-336?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Emmanuel Lecharny resolved DIRAPI-336.
--------------------------------------
Resolution: Fixed
Fix Version/s: 2.0.0.AM3
Fixed with commit 5bb4a035b
> GeneralizedTime issue with timezone when DST is applied
> -------------------------------------------------------
>
> Key: DIRAPI-336
> URL: https://issues.apache.org/jira/browse/DIRAPI-336
> Project: Directory Client API
> Issue Type: Bug
> Affects Versions: 2.0.0.AM2
> Environment: Windows 10 pro
> JDK 1.8.0_144
> api-util 2.0.0.AM2
> Reporter: Vitali Sidaruk
> Priority: Major
> Fix For: 2.0.0.AM3
>
>
> I have been facing some issues with timezone when I use GeneralizedTime.
> Looks like GeneralizedTime is not taking into account DST (daylight saving
> time) have taken place in Europe.
> After the last Sunday in March DST is applied in most European countries. I
> expect to see +0200 timezone offset when the date in April is converted to
> the string, but there is a +0100 (line 4 in output section).
> I have pasted a following code snippet, where I write date with time and
> timezone offset to the output from ZonedDateTime and GeneralizedTime.
>
> {code:java}
> import org.apache.directory.api.util.GeneralizedTime;
> import java.text.SimpleDateFormat;
> import java.time.LocalDateTime;
> import java.time.ZoneId;
> import java.time.ZonedDateTime;
> import java.util.GregorianCalendar;
> ZoneId swissZone = ZoneId.of("Europe/Zurich");
> SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssZ");
> ZonedDateTime winterZonedDateTime =
> LocalDateTime.parse("2019-01-23T01:23:45").atZone(swissZone);
> GregorianCalendar winterCalendar =
> GregorianCalendar.from(winterZonedDateTime);
> System.out.println(dateFormat.format(winterCalendar.getTime())); //
> 20190123012345+0100
> GeneralizedTime winterGeneralizedTime = new GeneralizedTime(winterCalendar);
> String winterGeneralizedTimeString = winterGeneralizedTime.toGeneralizedTime(
> GeneralizedTime.Format.YEAR_MONTH_DAY_HOUR_MIN_SEC,
> GeneralizedTime.FractionDelimiter.DOT, 1,
> GeneralizedTime.TimeZoneFormat.DIFF_HOUR_MINUTE);
> System.out.println(winterGeneralizedTimeString); // 20190123012345+0100
> ZonedDateTime summerZonedDateTime =
> LocalDateTime.parse("2019-04-03T01:23:45").atZone(swissZone);
> GregorianCalendar summerCalendar =
> GregorianCalendar.from(summerZonedDateTime);
> System.out.println(dateFormat.format(summerCalendar.getTime())); //
> 20190403012345+0200
> GeneralizedTime summerGeneralizedTime = new GeneralizedTime(summerCalendar);
> String summerGeneralizedTimeString = summerGeneralizedTime.toGeneralizedTime(
> GeneralizedTime.Format.YEAR_MONTH_DAY_HOUR_MIN_SEC,
> GeneralizedTime.FractionDelimiter.DOT, 1,
> GeneralizedTime.TimeZoneFormat.DIFF_HOUR_MINUTE);
> System.out.println(summerGeneralizedTimeString); // 20190403012345+0100
> {code}
> The output is
> {code:java}
> 20190123012345+0100 // winter time from ZonedDateTime
> 20190123012345+0100 // winter time from GeneralizedTime
> 20190403012345+0200 // summer time from ZonedDateTime
> 20190403012345+0100 // summer time from GeneralizedTime, expected timezone
> offset +0200
> {code}
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)