gpt4 book ai didi

java - 在 JodaTime 中创建特定时区的日期时间对象

转载 作者:行者123 更新时间:2023-12-02 03:34:30 24 4
gpt4 key购买 nike

我有一个字符串形式的日期、时区和时间,我想用该时区的日期和时间构造一个 JodaTime 对象。我写的代码是

String dateString = "2016-06-02";
String time = "01:00:00";
String timezone = "Australia/Brisbane";
DateTime dateInTimezone = DateTime.parse(dateString+" "+time,DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"))
.withZone(DateTimeZone.forID(timezone));

我希望使用值2016-06-02T01:00:00.000+10:00创建dateInTimezone,但它是使用值2016-创建的06-02T18:00:00.000+10:00。我的系统时区位于 America\Los_Angeles。据我了解,它需要我在系统时区中作为参数传递的时间,并将其转换为我指定的时区。也许这就是 01:00:00 在内部转换为 18:00:00 的原因。

如何创建具有指定时间和指定时区的 joda 时间对象,而不进行任何转换?

最佳答案

在解析之前将时区添加到格式化程序中:

String dateString = "2016-06-02";
String time = "01:00:00";
String timezone = "Australia/Brisbane";
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")
.withZone(DateTimeZone.forID(timezone));
DateTime dateInTimezone = DateTime.parse(dateString+" "+time, formatter);

另一种选择是按您的方式进行,但请调用 DateTime.withZoneRetainFields() ,但是如果在初始时区的无效日期(例如 DST 间隙之间)出现解析失败的风险。

关于java - 在 JodaTime 中创建特定时区的日期时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37601865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com