提交 9932e2d6 authored 作者: Steve McLeod's avatar Steve McLeod

getCalendar() and getCalendar(TimeZone) now both clear the Calendar object before returning it.

上级 96b50c6f
...@@ -91,6 +91,7 @@ public class DateTimeUtils { ...@@ -91,6 +91,7 @@ public class DateTimeUtils {
c = Calendar.getInstance(); c = Calendar.getInstance();
CACHED_CALENDAR.set(c); CACHED_CALENDAR.set(c);
} }
c.clear();
return c; return c;
} }
...@@ -106,6 +107,7 @@ public class DateTimeUtils { ...@@ -106,6 +107,7 @@ public class DateTimeUtils {
c = Calendar.getInstance(tz); c = Calendar.getInstance(tz);
CACHED_CALENDAR_NON_DEFAULT_TIMEZONE.set(c); CACHED_CALENDAR_NON_DEFAULT_TIMEZONE.set(c);
} }
c.clear();
return c; return c;
} }
...@@ -423,7 +425,6 @@ public class DateTimeUtils { ...@@ -423,7 +425,6 @@ public class DateTimeUtils {
} else { } else {
c = getCalendar(tz); c = getCalendar(tz);
} }
c.clear();
c.setLenient(lenient); c.setLenient(lenient);
setCalendarFields(c, year, month, day, hour, minute, second, millis); setCalendarFields(c, year, month, day, hour, minute, second, millis);
return c.getTime().getTime(); return c.getTime().getTime();
...@@ -490,7 +491,8 @@ public class DateTimeUtils { ...@@ -490,7 +491,8 @@ public class DateTimeUtils {
* @return the milliseconds * @return the milliseconds
*/ */
public static long getTimeLocalWithoutDst(java.util.Date d) { public static long getTimeLocalWithoutDst(java.util.Date d) {
return d.getTime() + getCalendar().get(Calendar.ZONE_OFFSET); Calendar calendar = getCalendar();
return d.getTime() + calendar.get(Calendar.ZONE_OFFSET);
} }
/** /**
...@@ -501,11 +503,7 @@ public class DateTimeUtils { ...@@ -501,11 +503,7 @@ public class DateTimeUtils {
* @return the number of milliseconds in UTC * @return the number of milliseconds in UTC
*/ */
public static long getTimeUTCWithoutDst(long millis) { public static long getTimeUTCWithoutDst(long millis) {
Calendar calendar = getCalendar(); return millis - getCalendar().get(Calendar.ZONE_OFFSET);
// clearing calendar is work-around for bug with "Europe/Moscow" timezone with Java 1.8.0_60
// if calendar is not cleared, then subsequent calls to this method with the same input return different values.
calendar.clear();
return millis - calendar.get(Calendar.ZONE_OFFSET);
} }
/** /**
* Return the day of week according to the ISO 8601 specification. Week * Return the day of week according to the ISO 8601 specification. Week
...@@ -775,7 +773,6 @@ public class DateTimeUtils { ...@@ -775,7 +773,6 @@ public class DateTimeUtils {
*/ */
public static long dateValueFromDate(long ms) { public static long dateValueFromDate(long ms) {
Calendar cal = getCalendar(); Calendar cal = getCalendar();
cal.clear();
cal.setTimeInMillis(ms); cal.setTimeInMillis(ms);
return dateValueFromCalendar(cal); return dateValueFromCalendar(cal);
} }
...@@ -803,7 +800,6 @@ public class DateTimeUtils { ...@@ -803,7 +800,6 @@ public class DateTimeUtils {
*/ */
public static long nanosFromDate(long ms) { public static long nanosFromDate(long ms) {
Calendar cal = getCalendar(); Calendar cal = getCalendar();
cal.clear();
cal.setTimeInMillis(ms); cal.setTimeInMillis(ms);
return nanosFromCalendar(cal); return nanosFromCalendar(cal);
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论