我正在使用ibm 的MessageFormat
库来本地化传入日期。
这里的任务是在将日期显示给最终用户之前对其进行一些检查。我得到了一个 ZonedDateTime 对象,我需要确保它不会出现在周末,我使用getDayOfWeek
.
当我尝试使用 MessageFormat 将日期转换为字符串时,就会出现问题。由于 MessageFormat 只接受java.util.Date
对象,因此我转换了 ZonedDateTime -> Instant
-> Date。不幸的是,这种方法导致我的“星期一”变成了“星期日”,如下所示。
我注意到这种“损失”发生在Date
转换时。这是因为 MessageFormat 正在调用 Date.toString() 对象,而前者使用 JVM 的默认时区(在我的例子中是 PST)。结果,我的 UTC 被隐式转换为 PST,我损失了一天。
任何想法如何解决这个问题?还有什么可以传递给 MessageFormat 的吗?有没有办法使用 Date 但不会得到这种不受欢迎的行为?我可以使用另一个本地化库吗?