您正在使它变得比所需复杂得多:
DateTime dt = new DateTime(DateTimeZone.UTC);
完全不需要 转换 。如果您确实需要转换,可以使用
withZone。我建议您 避免
通过
LocalDateTime,因为那样会因时区转换而丢失信息(两个不同的时刻在同一时区中可能具有相同的本地时间,因为时钟会返回并重复本地时间。
综上所述,出于可测试性的考虑,我个人喜欢使用
Clock允许我获取当前时间的接口(例如作为
Instant)。然后,您可以在生产环境中运行时使用依赖项注入来注入实际系统时钟,并使用具有预设时间的假时钟来进行测试。Java
8的
java.time软件包内置了这个想法,顺便说一句。



