gpt4 book ai didi

java - 格式字符串 yyyy-mm-dd hh :mm:ss +timezone into DateTime

转载 作者:行者123 更新时间:2023-12-02 01:59:08 26 4
gpt4 key购买 nike

我需要格式化一个如下所示的字符串:

"2018-07-20 18:53:46.598000 +02:00:00" 

像这样的 DateTime 对象:

20/07/2018 (HH with Timezone applied):53:46

我的方法是:

String dateTimePattern = "dd/MM/yyyy HH:mm:ss";
SimpleDateFormat dateTimeFormat = new SimpleDateFormat(dateTimePattern);
Date feUltModDateTime = dateTimeFormat.parse(feUltMod);
feUltMod = feUltModDateTime.toString();

但是我遇到了解析错误:

java.text.ParseException: Unparseable date: "2018-07-20 18:53:46.598000 +02:00:00"

最佳答案

java.time

    DateTimeFormatter origFormatter 
= DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.SSSSSS XXXXX");
DateTimeFormatter desiredFormatter = DateTimeFormatter.ofPattern("dd/MM/uuuu HH:mm:ss");
ZoneId desiredZone = ZoneId.of("America/Fort_Nelson");

String feUltMod = "2018-07-20 18:53:46.598000 +02:00:00";
OffsetDateTime dateTime = OffsetDateTime.parse(feUltMod, origFormatter);
ZonedDateTime dateTimeWithTimeZoneApplied = dateTime.atZoneSameInstant(desiredZone);
feUltMod = dateTimeWithTimeZoneApplied.format(desiredFormatter);
System.out.println(feUltMod);

此代码段的输出是:

20/07/2018 09:53:46

通常,您需要两个格式化程序来将日期或日期时间从一种格式转换为另一种格式:一个指定要转换的格式,另一个指定要转换到<的格式/em>.

into a DateTime object like this

日期时间对象没有格式,因此在这方面不能“像这样”。上面代码片段中的 dateTimeWithTimeZoneApplied 位于指定的时区,因此小时数也已调整。转换为这个时区后,我已按照您提到的格式格式化为字符串,以防您需要这个(我没有发现清楚)。

我正在使用并推荐 java.time,这是现代 Java 日期和时间 API。您使用的日期和时间类 DateSimpleDateFormat 早已过时且设计不佳,不值得与它们斗争。另外,SimpleDateFormat 仅支持毫秒,因此只能在秒上正确使用 3 位小数,而不是您拥有的 6 位小数。

链接: Oracle tutorial: Date Time解释如何使用java.time

关于java - 格式字符串 yyyy-mm-dd hh :mm:ss +timezone into DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51894572/

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