From 5bb4a035b588679aa4aa40dd7495e00a096d027e Mon Sep 17 00:00:00 2001 From: emmanuel lecharny Date: Wed, 3 Apr 2019 23:33:26 +0200 Subject: [PATCH] Fix for DIRAPI-336 --- .../directory/api/util/GeneralizedTime.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/util/src/main/java/org/apache/directory/api/util/GeneralizedTime.java b/util/src/main/java/org/apache/directory/api/util/GeneralizedTime.java index de5ff956a3..4bac31d046 100644 --- a/util/src/main/java/org/apache/directory/api/util/GeneralizedTime.java +++ b/util/src/main/java/org/apache/directory/api/util/GeneralizedTime.java @@ -121,18 +121,21 @@ public enum Format { /** Time format with minutes and seconds, excluding fraction. */ YEAR_MONTH_DAY_HOUR_MIN_SEC, + /** Time format with minutes and seconds, including fraction. */ YEAR_MONTH_DAY_HOUR_MIN_SEC_FRACTION, /** Time format with minutes, seconds are omitted, excluding fraction. */ YEAR_MONTH_DAY_HOUR_MIN, - /** Time format with minutes seconds are omitted, including fraction. */ + + /** Time format with minutes seconds are omitted, including fraction of a minute. */ YEAR_MONTH_DAY_HOUR_MIN_FRACTION, /** Time format, minutes and seconds are omitted, excluding fraction. */ YEAR_MONTH_DAY_HOUR, - /** Time format, minutes and seconds are omitted, including fraction. */ - YEAR_MONTH_DAY_HOUR_FRACTION + + /** Time format, minutes and seconds are omitted, including fraction of an hour. */ + YEAR_MONTH_DAY_HOUR_FRACTION; } /** @@ -885,10 +888,10 @@ public String toGeneralizedTime( Format format, FractionDelimiter fractionDelimi else { // g-differential - TimeZone timeZone = clonedCalendar.getTimeZone(); - int rawOffset = timeZone.getRawOffset(); - - if ( rawOffset < 0 ) + int offset = clonedCalendar.get( Calendar.ZONE_OFFSET ) + clonedCalendar.get( Calendar.DST_OFFSET ); + + + if ( offset < 0 ) { result[pos++] = '-'; } @@ -897,9 +900,9 @@ public String toGeneralizedTime( Format format, FractionDelimiter fractionDelimi result[pos++] = '+'; } - rawOffset = Math.abs( rawOffset ); - hour = rawOffset / ( 60 * 60 * 1000 ); - int minute = ( rawOffset - ( hour * 60 * 60 * 1000 ) ) / ( 1000 * 60 ); + offset = Math.abs( offset ); + hour = offset / ( 60 * 60 * 1000 ); + int minute = ( offset - ( hour * 60 * 60 * 1000 ) ) / ( 1000 * 60 ); // The offset hour result[pos++] = ( byte ) ( ( hour / 10 ) + '0' );