diff --git a/src/main/java/org/graylog2/syslog4j/server/impl/event/CiscoSyslogServerEvent.java b/src/main/java/org/graylog2/syslog4j/server/impl/event/CiscoSyslogServerEvent.java index ed2d28f..155c42c 100644 --- a/src/main/java/org/graylog2/syslog4j/server/impl/event/CiscoSyslogServerEvent.java +++ b/src/main/java/org/graylog2/syslog4j/server/impl/event/CiscoSyslogServerEvent.java @@ -6,7 +6,6 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; -import java.util.Calendar; import java.util.Date; import java.util.Locale; @@ -147,7 +146,7 @@ protected void parseDate() { try { if (isYearMissing) { - String year = Integer.toString(Calendar.getInstance().get(Calendar.YEAR)); + String year = deriveEventYearFromSystemTime(); String modifiedDate = year + " " + originalDate; final ZonedDateTime dateTime = ZonedDateTime.parse(modifiedDate, formatter); this.date = Date.from(dateTime.toInstant()); diff --git a/src/main/java/org/graylog2/syslog4j/server/impl/event/SyslogServerEvent.java b/src/main/java/org/graylog2/syslog4j/server/impl/event/SyslogServerEvent.java index 0dff9ff..c4ac500 100644 --- a/src/main/java/org/graylog2/syslog4j/server/impl/event/SyslogServerEvent.java +++ b/src/main/java/org/graylog2/syslog4j/server/impl/event/SyslogServerEvent.java @@ -11,12 +11,14 @@ import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.Year; import java.time.ZoneId; import java.time.ZoneOffset; -import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.Objects; +import java.util.Optional; +import java.util.TimeZone; /** * SyslogServerEvent provides an implementation of the SyslogServerEventIF interface. @@ -136,7 +138,7 @@ protected void parseDate() { } private Date parseDateBasedOnFormat(String originalDate, int dateLength, String format) throws ParseException { - String year = Integer.toString(Calendar.getInstance().get(Calendar.YEAR)); + String year = deriveEventYearFromSystemTime(); String modifiedDate = originalDate + " " + year; DateFormat dateFormat = new SimpleDateFormat(format, Locale.ENGLISH); @@ -147,6 +149,14 @@ private Date parseDateBasedOnFormat(String originalDate, int dateLength, String return dateFormat.parse(modifiedDate); } + protected String deriveEventYearFromSystemTime() { + ZoneId zoneId = Optional.ofNullable(sysLogServerTimeZone) + .map(tz -> tz.toTimeZone()) + .map(TimeZone::toZoneId) + .orElse(ZoneId.systemDefault()); + return Integer.toString(Year.now(zoneId).getValue()); + } + private DateTime parse8601Date(String date) { if (!hasTimeZone(date) && Objects.nonNull(sysLogServerTimeZone)) {