【发布时间】:2020-01-23 07:49:02
【问题描述】:
我正在尝试将字符串日期时间解析为 Java 中的 LocalDateTime 或 Date。
我可能会得到像12/21/2020 12:12:12 PM、1/12/2020 2:6:8 PM、10/2/2020 10:50:8 AM 这样的输入
我尝试在DateTimeFormatter 或DateTimeFormatBuilder 下使用不同类型的模式,它们可以工作。蛮力方法Where I am Hard coding different combination of pattern。这是从链接复制的代码:
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
class Main {
public static void main(String[] args) {
// many combinations
final String DATE_FORMATS = "[MM/dd/yyyy HH:mm:ss a][M/dd/yyyy H:mm:ss a]";
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(DATE_FORMATS);
System.out.println(dateFormatter.parse("12/21/2020 11:12:12 AM"));
System.out.println(dateFormatter.parse("1/12/2020 2:54:55 AM"));
}
}
由于我无法控制输入,还有其他解决方案吗?单一模式,我可以在Formatter 中使用而不是多重组合?还是先接收后修改输入再解析更好?
【问题讨论】:
-
我们如何告诉您是否有与您未在此处显示的解决方案不同的解决方案?请编辑您的问题并添加您的版本,谢谢!
-
请告诉我们您尝试了什么,您期望什么以及发生了什么!
-
说话便宜,看代码!
-
“蛮力法”是什么意思?将
String解析为java.time类之一的标准方法是DateTimeFormatter。请出示minimal reproducible example 证明您遇到的问题。 -
至于你的问题,你在寻找什么样的解决方案?如果您有多种可能的格式,那么您将需要多个模式或一个可以处理所有不同模式的模式(如果可能的话)。更好的选择是控制输入并要求它是某种格式。
标签: java datetime java-8 datetime-format