From b463a3adebed8b0c4856df14c3f0952bd483fc73 Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Sat, 29 May 2021 13:03:13 +1000 Subject: [PATCH] Don't apply timezone to dates even if provided --- .../net/fortuna/ical4j/model/property/DateProperty.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/fortuna/ical4j/model/property/DateProperty.java b/src/main/java/net/fortuna/ical4j/model/property/DateProperty.java index a9792fe83..d3d804654 100644 --- a/src/main/java/net/fortuna/ical4j/model/property/DateProperty.java +++ b/src/main/java/net/fortuna/ical4j/model/property/DateProperty.java @@ -135,7 +135,7 @@ public DateProperty(final String name, CalendarDateFormat parseFormat, Value def public T getDate() { if (date != null) { Optional tzId = getParameters().getFirst(Parameter.TZID); - if (tzId.isPresent()) { + if (tzId.isPresent() && shouldApplyTimezone()) { return (T) date.toLocalTime(tzId.get().toZoneId(timeZoneRegistry)); } else { return date.getTemporal(); @@ -199,7 +199,7 @@ public void setValue(final String value) throws DateTimeParseException { @Override public String getValue() { Optional tzId = getParameters().getFirst(Parameter.TZID); - if (tzId.isPresent()) { + if (tzId.isPresent() && shouldApplyTimezone()) { return date.toString(tzId.get().toZoneId(timeZoneRegistry)); } else { return Strings.valueOf(date); @@ -210,6 +210,11 @@ public void setTimeZoneRegistry(TimeZoneRegistry timeZoneRegistry) { this.timeZoneRegistry = timeZoneRegistry; } + private boolean shouldApplyTimezone() { + Optional value = getParameters().getFirst(VALUE); + return !Optional.of(Value.DATE).equals(value); + } + /** * {@inheritDoc} */