diff --git a/build-number.txt b/build-number.txt index f677f955..f0dfa1fe 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -3265 \ No newline at end of file +3266 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/commands/InfoCommand.java b/src/main/java/me/chayapak1/chomens_bot/commands/InfoCommand.java index d7073a08..36eed00a 100644 --- a/src/main/java/me/chayapak1/chomens_bot/commands/InfoCommand.java +++ b/src/main/java/me/chayapak1/chomens_bot/commands/InfoCommand.java @@ -6,6 +6,7 @@ import me.chayapak1.chomens_bot.command.CommandContext; import me.chayapak1.chomens_bot.command.CommandException; import me.chayapak1.chomens_bot.command.TrustLevel; import me.chayapak1.chomens_bot.util.StringUtilities; +import me.chayapak1.chomens_bot.util.TimeUtilities; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.event.HoverEvent; @@ -26,10 +27,7 @@ import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.OffsetDateTime; import java.time.ZoneId; -import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; @@ -200,12 +198,13 @@ public class InfoCommand extends Command { case "botlogintime" -> { final long loginTime = bot.loginTime; - final Instant instant = Instant.ofEpochMilli(loginTime); final ZoneId zoneId = ZoneId.of("UTC"); - final OffsetDateTime localDateTime = OffsetDateTime.ofInstant(instant, zoneId); - final DateTimeFormatter loginTimeFormatter = DateTimeFormatter.ofPattern("MMMM d, yyyy, hh:mm:ss a Z"); - final String formattedLoginTime = localDateTime.format(loginTimeFormatter); + final String formattedLoginTime = TimeUtilities.formatTime( + loginTime, + "MMMM d, yyyy, hh:mm:ss a Z", + zoneId + ); final DateFormat timeSinceFormatter = new SimpleDateFormat("HH 'hours' mm 'minutes' ss 'seconds'"); timeSinceFormatter.setTimeZone(TimeZone.getTimeZone(zoneId)); // very important diff --git a/src/main/java/me/chayapak1/chomens_bot/commands/MailCommand.java b/src/main/java/me/chayapak1/chomens_bot/commands/MailCommand.java index 7f76d73f..675a12b9 100644 --- a/src/main/java/me/chayapak1/chomens_bot/commands/MailCommand.java +++ b/src/main/java/me/chayapak1/chomens_bot/commands/MailCommand.java @@ -10,15 +10,14 @@ import me.chayapak1.chomens_bot.data.mail.Mail; import me.chayapak1.chomens_bot.data.player.PlayerEntry; import me.chayapak1.chomens_bot.plugins.DatabasePlugin; import me.chayapak1.chomens_bot.util.I18nUtilities; +import me.chayapak1.chomens_bot.util.TimeUtilities; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.JoinConfiguration; import net.kyori.adventure.text.event.HoverEvent; import net.kyori.adventure.text.format.NamedTextColor; import java.time.Instant; -import java.time.OffsetDateTime; import java.time.ZoneId; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -129,12 +128,11 @@ public class MailCommand extends Command { for (final Mail mail : mails) { if (!mail.sentTo().equals(sender.profile.getName())) continue; - final Instant instant = Instant.ofEpochMilli(mail.timeSent()); - final ZoneId zoneId = ZoneId.systemDefault(); - final OffsetDateTime localDateTime = OffsetDateTime.ofInstant(instant, zoneId); - - final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy, hh:mm:ss a Z"); - final String formattedTime = localDateTime.format(formatter); + final String formattedTime = TimeUtilities.formatTime( + mail.timeSent(), + "MMMM d, yyyy, hh:mm:ss a Z", + ZoneId.of("UTC") + ); mailsComponent.add( Component.translatable( diff --git a/src/main/java/me/chayapak1/chomens_bot/commands/SeenCommand.java b/src/main/java/me/chayapak1/chomens_bot/commands/SeenCommand.java index 8ac3c8d1..f14f2ead 100644 --- a/src/main/java/me/chayapak1/chomens_bot/commands/SeenCommand.java +++ b/src/main/java/me/chayapak1/chomens_bot/commands/SeenCommand.java @@ -9,14 +9,12 @@ import me.chayapak1.chomens_bot.command.CommandContext; import me.chayapak1.chomens_bot.command.CommandException; import me.chayapak1.chomens_bot.command.TrustLevel; import me.chayapak1.chomens_bot.plugins.DatabasePlugin; +import me.chayapak1.chomens_bot.util.TimeUtilities; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.JoinConfiguration; import net.kyori.adventure.text.format.NamedTextColor; -import java.time.Instant; -import java.time.OffsetDateTime; import java.time.ZoneId; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -80,12 +78,11 @@ public class SeenCommand extends Command { if (time == null || time.isNull()) throw new CommandException(Component.translatable("commands.seen.error.no_time_entry")); - final Instant instant = Instant.ofEpochMilli(time.asLong()); - final ZoneId zoneId = ZoneId.of("UTC"); // should i be using this? - final OffsetDateTime localDateTime = OffsetDateTime.ofInstant(instant, zoneId); - - final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, MMMM d, yyyy, hh:mm:ss a Z"); - final String formattedTime = localDateTime.format(formatter); + final String formattedTime = TimeUtilities.formatTime( + time.asLong(), + "EEEE, MMMM d, yyyy, hh:mm:ss a Z", + ZoneId.of("UTC") + ); final String server = lastSeen.get("server").asText(); diff --git a/src/main/java/me/chayapak1/chomens_bot/commands/TimeCommand.java b/src/main/java/me/chayapak1/chomens_bot/commands/TimeCommand.java index 0657e8b0..19759e94 100644 --- a/src/main/java/me/chayapak1/chomens_bot/commands/TimeCommand.java +++ b/src/main/java/me/chayapak1/chomens_bot/commands/TimeCommand.java @@ -5,13 +5,13 @@ import me.chayapak1.chomens_bot.command.Command; import me.chayapak1.chomens_bot.command.CommandContext; import me.chayapak1.chomens_bot.command.CommandException; import me.chayapak1.chomens_bot.command.TrustLevel; +import me.chayapak1.chomens_bot.util.TimeUtilities; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import java.time.DateTimeException; +import java.time.Instant; import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; public class TimeCommand extends Command { public TimeCommand () { @@ -30,11 +30,11 @@ public class TimeCommand extends Command { final String timezone = context.getString(true, true); - final ZoneId zoneId = ZoneId.of(timezone); - final ZonedDateTime zonedDateTime = ZonedDateTime.now(zoneId); - - final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, MMMM d, yyyy, hh:mm:ss a"); - final String formattedTime = zonedDateTime.format(formatter); + final String formattedTime = TimeUtilities.formatTime( + Instant.now().toEpochMilli(), + "EEEE, MMMM d, yyyy, hh:mm:ss a", + ZoneId.of(timezone) + ); return Component.translatable( "commands.time.output", diff --git a/src/main/java/me/chayapak1/chomens_bot/util/TimeUtilities.java b/src/main/java/me/chayapak1/chomens_bot/util/TimeUtilities.java new file mode 100644 index 00000000..94208f0b --- /dev/null +++ b/src/main/java/me/chayapak1/chomens_bot/util/TimeUtilities.java @@ -0,0 +1,17 @@ +package me.chayapak1.chomens_bot.util; + +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +public class TimeUtilities { + public static String formatTime (final long milliseconds, final String format, final ZoneId zoneId) { + final Instant instant = Instant.ofEpochMilli(milliseconds); + final OffsetDateTime localDateTime = OffsetDateTime.ofInstant(instant, zoneId); + + final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format); + + return localDateTime.format(formatter); + } +}