Java 时间不一致地报告结果

java time inconsistently reporting results

提问人:kishjeff 提问时间:6/1/2023 最后编辑:kishjeff 更新时间:6/15/2023 访问量:58

问:

我有这段代码,它是使用某种格式的字符串构建 JWT 令牌的一部分,该字符串应该代表 GMT 时区的当前时间:

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                                    .appendPattern("MM/dd/yyyy ")
                                    .appendPattern("HH:mm:ss")
                                    .toFormatter(Locale.ENGLISH)
                                    .withResolverStyle(ResolverStyle.SMART);
    
// Get the current time in the GMT timezone
LocalDateTime currentTime = LocalDateTime.now().withNano(0);
String sDFM = currentTime.atZone(TimeZone.getTimeZone("GMT").toZoneId())
                         .format(formatter);
debugLog(" time to use for token is: " + sDFM);

令人困惑的是(对我来说),这并不总是有效,足以让我认为它解决了,然后砰的一声......它失败了。

以下是一些日志文件条目,这些条目的 UTC 左侧是 WebSphere 日志时间,右侧是上述代码返回的时间:

Line 243479: [5/31/23 23:07:39:596 UTC] 00000156 SystemOut     O 31 May 2023 23:07:39:596 [DEBUG] [MXServer] [] MFA  time to use for token is: May, 31 2023 23:07:39
Line 358120: [5/31/23 23:30:55:926 UTC] 00000159 SystemOut     O 31 May 2023 23:30:55:926 [DEBUG] [MXServer] [] IAMFAUtil  time to use for token is: 05/31/2023 23:30:55
Line 568091: [6/1/23 0:26:39:967 UTC] 00000158 SystemOut     O 01 Jun 2023 00:26:39:967 [DEBUG] [MXServer] [] MFA  time to use for token is: June, 01 2023 24:26:39
Line 568178: [6/1/23 0:26:40:611 UTC] 00000158 SystemOut     O 01 Jun 2023 00:26:40:611 [DEBUG] [MXServer] [] MFA  time to use for token is: June, 01 2023 24:26:40

我有时也会在其他区域看到另一个时间,说凌晨 5 点(偶尔)这种情况发生得足够频繁,以至于一切都停止了工作...... 新说明:我没想到输出是“24:26:40”,我预计小时(输出的第一段)是 0-23,即模式 HH 而不是模式 kk。我将重新测试以验证我没有误导这里的任何人并返回。感谢您的时间和想法。

Java 时间 datetime-format java-time GMT

评论

1赞 deHaar 6/1/2023
究竟什么不起作用?只是格式吗?在输出示例中,有一行因使用您的格式而与其他行不同。这些日志从何而来?也许它使用的日志源与日志源不同,只是不应用您的格式......IAMFAUtilMFA
1赞 Anonymous 6/2/2023
顺便说一句,你的大部头区域转换是错误的。你想要。您不想用于任何内容,因为它没有定义时间点。OffsetDateTime .now(ZoneOffset.UTC) .truncatedTo(ChronoUnit.SECONDS) .format(formatter)LocalDateTime
0赞 Anonymous 6/2/2023
你的输出对我来说总体上是公平的。请具体说明您想要什么。
0赞 kishjeff 6/15/2023
我将重新测试以避免误导性的“大脑法尔克”问题,谢谢。

答: 暂无答案