[英]Using Java SimpleDateFormat to find max date
我已经多年没有使用Java编程了,但是现在我必须更改前一段时间编写的程序。 在此程序中,我需要读取QIF文件并查找具有最大日期(Dmm-dd-yyyy)的qif记录。 我无法在程序中使用它,因此我编写了一个简单的测试来演示我遇到的问题。 我认为还有其他方法可以做到这一点,例如列表和集合。 但是我仍然想知道为什么使用SimpleDateFormat不起作用。 注意在输出中,此方法产生了7月的最大值,但似乎忽略了所有8月的日期。
导入java.text.SimpleDateFormat; 导入java.util.Date;
class DateParser {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("mm-dd-yyyy");
Date nextDate = null;
Date maxDate = null;
String nextStrDate = null;
String maxStrDate = null;
//Fill date array.
String date[] = {"07-14-2014","07-22-2014","07-31-2014",
"08-01-2014","08-04-2014","08-06-2014"};
try {
//Start with early maximum date.
maxDate = sdf.parse("01-01-1800");
// Find Max date in array.
for (int i=0; i<6; ++i) {
nextStrDate = date[i];
nextDate = sdf.parse(nextStrDate);
if(nextDate.after(maxDate)){
maxStrDate = nextStrDate;
maxDate = nextDate;
}
System.out.println( "Next Date = " + nextStrDate);
}
System.out.println("\nMax Date = " + maxStrDate);
} catch (Exception e) {
System.out.println("Got error:" + e);
}
}
}
OUTPUT
Next Date = 07-14-2014
Next Date = 07-22-2014
Next Date = 07-31-2014
Next Date = 08-01-2014
Next Date = 08-04-2014
Next Date = 08-06-2014
Max Date = 07-31-2014
您的格式不正确,这
SimpleDateFormat sdf = new SimpleDateFormat("mm-dd-yyyy");
应该
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
因为(根据SimpleDateFormat
文档),
Letter Date or Time Component Presentation Examples ... M Month in year Month July; Jul; 07 ... m Minute in hour Number 30
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.