提问人:kishjeff 提问时间:6/1/2023 最后编辑:kishjeff 更新时间:6/15/2023 访问量:58
Java 时间不一致地报告结果
java time inconsistently reporting results
问:
我有这段代码,它是使用某种格式的字符串构建 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。我将重新测试以验证我没有误导这里的任何人并返回。感谢您的时间和想法。
答: 暂无答案
评论
IAMFAUtil
MFA
OffsetDateTime .now(ZoneOffset.UTC) .truncatedTo(ChronoUnit.SECONDS) .format(formatter)
LocalDateTime