pet*_*ust 7 java date jodatime simpledateformat
我正在使用Joda来解析日期并使用不使用前导零的格式,例如:
Mon Nov 20 14:40:36 2006
Mon Nov 6 14:40:36 2006
Run Code Online (Sandbox Code Playgroud)
请注意,dayOfMonth字段用空白填充.
目前我似乎必须使用两种不同的格式,如果一个失败则重新分析
"EEE MMM dd HH:mm:ss yyyy"
"EEE MMM d HH:mm:ss yyyy"
Run Code Online (Sandbox Code Playgroud)
是否有单一格式(或API开关)处理这两种情况?(SimpleDateFormat的答案是一样的 - 我不使用它?)
小智 7
我刚刚创建了一个快速程序来检查这个 -
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM d HH:mm:ss yyyy");
try {
String source1 = "Mon Nov 20 14:40:36 2006";
Date d1 = sdf.parse(source1);
String source2 = "Mon Nov 6 14:40:36 2006";
Date d2 = sdf.parse(source2);
String res1 = sdf.format(d1);
String res2 = sdf.format(d2);
System.out.println(source1 +"="+ res1);
System.out.println(source2 +"="+ res2);
} catch (ParseException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这个输出是 -
Mon Nov 20 14:40:36 2006=Mon Nov 20 14:40:36 2006
Mon Nov 6 14:40:36 2006=Mon Nov 6 14:40:36 2006
Run Code Online (Sandbox Code Playgroud)
所以,即使source2有额外的空间,它仍然被解析
EEE MMM d HH:mm:ss yyyy
Run Code Online (Sandbox Code Playgroud)
希望有所帮助
这是现代答案,使用 java.time,Joda-Time 的继承者。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM ppd HH:mm:ss uuuu", Locale.ENGLISH);
String[] stringsToParse = {
"Mon Nov 20 14:40:36 2006",
"Mon Nov 6 14:40:36 2006"
};
for (String dateTimeString : stringsToParse) {
LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);
System.out.println(dateTime);
}
Run Code Online (Sandbox Code Playgroud)
输出:
Run Code Online (Sandbox Code Playgroud)2006-11-20T14:40:36 2006-11-06T14:40:36
为了DateTimeFormatter.ofPattern
格式信p
方式填充在左侧的空间。pp
表示填充到两个位置。它可以用于格式化和 - 就像这里 - 解析。
我知道你问过 Joda-Time。Joda-Time 主页说:
请注意,Joda-Time 被认为是一个很大程度上“已完成”的项目。没有计划进行重大改进。如果使用 Java SE 8,请迁移到
java.time
(JSR-310)。
DateTimeFormatter
小智 5
我尝试使用上面在logstash 1.1.1中建议的单个“d”,但是当解析带有额外前导空格的单个数字日期时,它仍然抱怨日期格式错误。以下 logstash 规则确实有效。
timestamp => [ "MMM dd HH:mm:ss", "MMM d HH:mm:ss" ]
Run Code Online (Sandbox Code Playgroud)
两种日期格式的顺序无关紧要。添加两种格式后不再输出警告。
归档时间: |
|
查看次数: |
5615 次 |
最近记录: |