是否有一些简单的方法可以在不使用日期字符串的情况下解析java中不同类型的日期?
我必须处理6种不同类型的日期:
我不知道日期是从服务器以一种格式到达另一种格式......
谢谢你!答案 0 :(得分:4)
您可以迭代所有格式并尝试解析,忽略该异常。如果没有格式适合,则抛出异常。
答案 1 :(得分:1)
标准API的最着名的替代品是Joda-Time。 JSR 310也改进了Java SE 7的日期/时间API
答案 2 :(得分:1)
我认为没有一种实际的“简单”方式来处理这种不同的日期格式。 如果您可以选择将“标准日期格式”指向服务器,这将是一种简单的方法。
一种常见的方法是为您必须处理的每个“怪异”日期格式构建一个DateParser。以下是使用Joda Time的第一次约会示例:
String date1 = "16 May 2013 19:27:12 CEST";
DateTimeFormatter fmt = new DateTimeFormatterBuilder()
.appendDayOfMonth(2)
.appendLiteral(' ')
.appendMonthOfYearShortText()
.appendLiteral(' ')
.appendYear(4, 4)
.appendLiteral(' ')
.appendHourOfDay(2)
.appendLiteral(":")
.appendMinuteOfDay(2)
.appendLiteral(":")
.appendSecondOfDay(2)
.appendLiteral(' ')
.appendLiteral("CEST")
.toFormatter();
DateTime parseDateTime = fmt.parseDateTime(date1);
System.out.println(parseDateTime);
我希望这可以帮助您为其他案例构建DateParsers。请记住 - 始终保存与UTC相关的日期!
答案 3 :(得分:1)
要详细说明股票“使用Joda-Time”答案,在Joda-Time中,您可以为6种格式中的每种格式创建DateTimeParser
,然后将它们附加到单个DateTimeFormatter
。
请参阅此问题的接受答案: Using Joda Date & Time API to parse multiple formats
答案 4 :(得分:0)
以下是示例代码,对于日期字符串,如2001-07-04T12:08:56.235-0700,我们需要使用以下格式“yyyy-MM-dd'T'HH:mm:ss.SSSZ”
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = simpleDateFormat.parse("2001-07-04T12:08:56.235-0700");
System.out.println(date);
详情请见以下链接