-1
我想使用SimpleDateFormat格式化日期的字符串數組。它會正確格式化第一個條目,但聲稱第二個條目是不可解析的,即使它們是相同的。我無法弄清楚我在這裏做錯了什麼,有什麼提示?如何使用SimpleDateFormat格式化字符串數組
String dates = "";
String test = "MM/dd/yyyy";
String end = "MMMMMMMMM d, yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(test);
//Match the pattern of 1 or more digits, a backslash, one or more digits,
//a backslash, and then four digits
Pattern pattern = Pattern.compile("\\d+/\\d+/\\d\\d\\d\\d");
Matcher matcher = pattern.matcher(input);
//While there are matches, concatenate the match to the string dates,
//with a semicolon separating each match
while (matcher.find())
{
String a = matcher.group(0).toString();
dates += ";" + a;
}
//Split the string on semicolons
String[] inputString = dates.split(";");
for (int i=1; i<inputString.length; i++)
{
System.out.println(inputString[i]);
}
//Change all dates of format MM/dd/yyyy into Month date, year and
//force them into uppercase
for (int i=1; i<inputString.length; i++)
{
String old = inputString[i];
Date a = sdf.parse(old);
sdf.applyPattern(end);
String notOld = sdf.format(a);
inputString[i] = notOld;
inputString[i] = inputString[i].toUpperCase();
System.out.println(inputString[i]);
}
這裏是輸出:
12/6/1852
12/6/1954
DECEMBER 6, 1852
Exception in thread "main" java.text.ParseException: Unparseable date: "12/6/1954"
at java.text.DateFormat.parse(Unknown Source)
at Info.fixer(Info.java:132)
at Info.main(Info.java:35)
'這個例子中的變量輸入是什麼? –
對於此片段,文本文件僅保留: 「12/6/1852 12/6/1954」 兩行。字符串還有很多,因爲它是一個很長的文本文件,我在這裏提取日期,但是這些文件正在文件的頂部進行測試,所以它永遠不會超過它們。 –
當你調用'applyPattern(end)',你改變'sdf'來格式化'MMMMMMMMM d,yyyy'。在下一次迭代中,您嘗試使用該格式解析'12/6/1954',並且糟糕!這是行不通的。 – Andreas