我有一个程序,可以在程序开始时一次性从用户那里读取日期格式,例如yyyy/MM/dd HH:mm:ss a
稍后,程序解析文件并对文件中的所有日期使用日期格式。但最近我得到一个文件,其中 99% 的日期是 2014/09/01 12:00:04 AM
所以用户可以输入 yyyy/MM/dd HH:mm:ss一个
。
但是该文件中的一个日期只是 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
来解析以下两个日期:
- 2014/09/01 12:00:04 上午
- 2014/09/01
谢谢
最佳答案
您必须使用两种格式。检查下面的示例
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"));
关于java - 使 Java DateFormat 适用于较短的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34281971/