From e9c8a25e979918c1cbfe6ec5a9e628c09f4c7c8a Mon Sep 17 00:00:00 2001 From: Lexi Larkin Date: Fri, 22 Dec 2023 16:55:51 -0500 Subject: [PATCH] fix: make time even more lenient it is now allowed to provide only a time --- .../converter/impl/ZonedDateTimeConverter.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/qixils/quasicord/converter/impl/ZonedDateTimeConverter.java b/src/main/java/dev/qixils/quasicord/converter/impl/ZonedDateTimeConverter.java index 53865fb..2c77125 100644 --- a/src/main/java/dev/qixils/quasicord/converter/impl/ZonedDateTimeConverter.java +++ b/src/main/java/dev/qixils/quasicord/converter/impl/ZonedDateTimeConverter.java @@ -63,7 +63,14 @@ public class ZonedDateTimeConverter implements Converter } // error if date is invalid - if (month == 0 || day == 0 || month > 12 || day > 31) + var now = ZonedDateTime.now(zone); + boolean autoDate = month == 0 && day == 0 && year == 0; + if (autoDate) { + year = now.getYear(); + month = now.getMonthValue(); + day = now.getDayOfMonth(); + } + else if (month < 1 || day < 1 || year == 0 || month > 12 || day > 31) throw new UserError(library("exception.invalid_date")); // get time @@ -91,6 +98,9 @@ else if (meridiem == 'a' && hour == 12) hour = 0; // return - return ZonedDateTime.of(year, month, day, hour, minute, second, nanos, zone); + var zdt = ZonedDateTime.of(year, month, day, hour, minute, second, nanos, zone); + if (zdt.isBefore(now) && autoDate) + zdt = zdt.plusDays(1); // TODO: this might pose accuracy issues around daylight savings crossovers? + return zdt; } }