Java 使用joda Time转换时间字符串

Java 使用joda Time转换时间字符串,java,jodatime,Java,Jodatime,我要打印以下时间字符串:“23.02.2015 14:06:30+01:00”。打印结果应为:“2015年2月23日15:06:30”。 经过一些研究,我刚刚找到了一个我认为不是好主意的解决方案。也许你们中有人对如何正确地做这件事有一些结论吗?转换应在joda时间内完成。 提前谢谢 **因解释上述副本的差异而更新: 我的第一种方法就像中提到的手动添加或删除小时数。我试图强调的是,我不认为这是一个好主意,因为如果输入字符串发生变化,这可能会很危险(可能会出现错误的空间很大)。因此,我想知道joda

我要打印以下时间字符串:“23.02.2015 14:06:30+01:00”。打印结果应为:“2015年2月23日15:06:30”。 经过一些研究,我刚刚找到了一个我认为不是好主意的解决方案。也许你们中有人对如何正确地做这件事有一些结论吗?转换应在joda时间内完成。 提前谢谢

**因解释上述副本的差异而更新:
我的第一种方法就像中提到的手动添加或删除小时数。我试图强调的是,我不认为这是一个好主意,因为如果输入字符串发生变化,这可能会很危险(可能会出现错误的空间很大)。因此,我想知道joda time是否有一些功能可以让我的生活更轻松,而我到目前为止还没有注意到。

在工作和转换到
joda time
时,我也注意到了这种奇怪的情况。我所做的只是从
Joda时间中减去一小时,如下所示:

DateTime dt1 = new DateTime([YOUR_JAVA.UTIL.DATE]);

Date result = new Date(dt1).minus(Seconds.seconds(3600)).getSeconds() * 1000);
你可以使用

输出为

23.02.2015 08:36:30
23.02.2015 09:36:30
结果日期没有错,有关此主题的更多信息,请查看

对于固定日期,我添加了带有
withZone的时区(DateTimeZone.forID(“Europe/Prague”)

public static void main(String[] args) {
        String dateTime = "23.02.2015 14:06:30 +01:00";
        DateTimeFormatter dtf = DateTimeFormat.forPattern("dd.MM.yyyy HH:mm:ss Z");

        DateTime jodatime = dtf.withZone( DateTimeZone.forID( "Europe/Prague" ) ).parseDateTime(dateTime);
        DateTimeFormatter dtfOut = DateTimeFormat.forPattern("dd.MM.yyyy HH:mm:ss");
        System.out.println(dtfOut.withZone( DateTimeZone.forID( "Europe/Prague" ) ).print(jodatime));


        DateTime resultDateTime = jodatime.plusHours(1);
        System.out.println(dtfOut.withZone( DateTimeZone.forID( "Europe/Prague" ) ).print(resultDateTime));
    }
输出为

23.02.2015 14:06:30
23.02.2015 15:06:30

你的解决方案是什么?为什么你不认为这是个好主意?“23.02.2015 14:06:30+01:00”与“23.02.2015 15:06:30+02:00”的时间(瞬间)相同,那么你想操纵时区偏移量吗?你还知道必须减去正偏移量才能得到UTC时间吗?更新了我的问题,并添加了一些关于我所做事情的解释。谢谢你的帖子。所以没有其他解决方案,然后手动添加/删除小时数?常用的方法是使用c的plusxxx方法当然,你可以尝试其他方法,但我认为这是最简单的一种。好的,谢谢你的回答。不客气,我很乐意帮助你。
23.02.2015 14:06:30
23.02.2015 15:06:30