如何将包含月份名称的字符串数据和时间转换为 Java 中的日期对象?
How to convert a String data and time including month name to Date object in Java?
我想将字符串中的日期转换为日期对象,即字符串“10h 57m 20s October 13 2020”。怎么办?可以先替换 h、m 和 s 以获得格式“10:57:20 October 13 2020”吗?同样,我尝试了最后一种格式“2020 年 10 月 13 日 10:57:20”以使用 DateTimeFormat 和 DateTimeFormatterBuilder() 获取日期,但它不适用于月份,或者它有效但小时转换为 00:00:00。
谢谢
您可以在撇号中放置固定字母。
"HH'h' mm'm' ss's' MMMM dd yyyy"
此外 hh
是与 a
AM/PM 合并的 12 小时格式。
HH
是 24 小时格式。
此外,区域设置必须正确,可能是明确设置的。这里是英文。
java.time
我建议您使用 java.time,现代 Java 日期和时间 API,作为您的日期和时间工作。就像 Joop Eggen 已经写过的那样,将格式中的字母放在格式模式字符串中的单引号中:
private static final DateTimeFormatter FORMATTER
= DateTimeFormatter.ofPattern("H'h' m'm' s's' MMMM d y", Locale.ENGLISH);
这将允许您像这样解析:
String dateInString = "10h 57m 20s October 13 2020";
LocalDateTime dateTime = LocalDateTime.parse(dateInString, FORMATTER);
System.out.println(dateTime);
输出:
2020-10-13T10:57:20
你不应该对老式的 Date
class 感兴趣。但是,有时我们需要将 Date
传递给尚未升级到 java.time 的遗留 API。转换要求我们知道为解析的日期和时间假定的时区。例如:
ZoneId zone = ZoneId.of("America/Tegucigalpa");
Instant i = dateTime.atZone(zone).toInstant();
Date oldfashionedDate = Date.from(i);
System.out.println(oldfashionedDate);
示例输出:
Tue Oct 13 10:57:20 CST 2020
教程link
Oracle tutorial: Date Time 解释如何使用 java.time.
我想将字符串中的日期转换为日期对象,即字符串“10h 57m 20s October 13 2020”。怎么办?可以先替换 h、m 和 s 以获得格式“10:57:20 October 13 2020”吗?同样,我尝试了最后一种格式“2020 年 10 月 13 日 10:57:20”以使用 DateTimeFormat 和 DateTimeFormatterBuilder() 获取日期,但它不适用于月份,或者它有效但小时转换为 00:00:00。
谢谢
您可以在撇号中放置固定字母。
"HH'h' mm'm' ss's' MMMM dd yyyy"
此外 hh
是与 a
AM/PM 合并的 12 小时格式。
HH
是 24 小时格式。
此外,区域设置必须正确,可能是明确设置的。这里是英文。
java.time
我建议您使用 java.time,现代 Java 日期和时间 API,作为您的日期和时间工作。就像 Joop Eggen 已经写过的那样,将格式中的字母放在格式模式字符串中的单引号中:
private static final DateTimeFormatter FORMATTER
= DateTimeFormatter.ofPattern("H'h' m'm' s's' MMMM d y", Locale.ENGLISH);
这将允许您像这样解析:
String dateInString = "10h 57m 20s October 13 2020";
LocalDateTime dateTime = LocalDateTime.parse(dateInString, FORMATTER);
System.out.println(dateTime);
输出:
2020-10-13T10:57:20
你不应该对老式的 Date
class 感兴趣。但是,有时我们需要将 Date
传递给尚未升级到 java.time 的遗留 API。转换要求我们知道为解析的日期和时间假定的时区。例如:
ZoneId zone = ZoneId.of("America/Tegucigalpa");
Instant i = dateTime.atZone(zone).toInstant();
Date oldfashionedDate = Date.from(i);
System.out.println(oldfashionedDate);
示例输出:
Tue Oct 13 10:57:20 CST 2020
教程link
Oracle tutorial: Date Time 解释如何使用 java.time.