我有一个程序,可以在程序开始时一次性地从用户读取Dateformat,例如yyyy/MM/dd HH:mm:ss a
稍后程序会解析文件并使用Dateformat来处理文件中的所有日期。但最近我收到了一个文件,其中99%的日期是2014/09/01 12:00:04 AM
所以用户可以输入yyyy/MM/dd HH:mm:ss a
。
但该文件中的一个日期只是2014/09/01
,日期格式yyyy/MM/dd HH:mm:ss a
失败。
为什么不能yyyy/MM/dd HH:mm:ss a
格式化较短的日期,例如格式yyyy/MM/dd
。
我想要的是java程序使用格式yyyy/MM/dd HH:mm:ss a
来解析以下两个日期:
由于
答案 0 :(得分:1)
您必须使用两种格式。请查看以下示例
DateFormat df = new DateFormat() {
static final String FORMAT1 = "yyyy/MM/dd HH:mm:ss";
static final String FORMAT2 = "yyyy/MM/dd";
final SimpleDateFormat sdf1 = new SimpleDateFormat(FORMAT1);
final SimpleDateFormat sdf2 = new SimpleDateFormat(FORMAT2);
@Override
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
return null;
}
@Override
public Date parse(String source, ParsePosition pos) {
if (source.length() - pos.getIndex() == FORMAT1.length())
return sdf1.parse(source, pos);
return sdf2.parse(source, pos);
}
};
System.out.println(df.parse("2014/09/01 12:00:04 AM"));
System.out.println(df.parse("2014/09/01"));