我的程序中发生了非常非常奇怪的事情,我想知道是否有人在此之前发现了这种情况。如果是这样,如何解决它。
基本上,我正在解析一个csv文件,没问题。一列包含日期,我将其读入String
并转换为Date
对象。再说一次,没问题。代码如下:
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yy hh:mm");
Date initialDate = new Date();
try {
initialDate = dateFormat.parse(rows.get(0)[8]);
System.out.println(initialDate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
当然,我也正在解析其他列(这些正常工作)。所以,当我为一个小的csv文件(2.8 MB)运行我的程序时,日期出来(即被解析)完美。但是,当我运行一个大型csv文件(25 MB)的程序时,日期是一个热点。
例如,看看我得到的年份值(以下只是上面代码中println输出的一小部分):
1000264 at Sun Nov 05 15:30:00 EST 2186
1000320 at Sat Mar 04 17:30:00 EST 2169
1000347 at Sat Apr 01 09:45:00 EDT 2169
1000413 at Tue Jul 09 13:00:00 EDT 2182
1000638 at Fri Dec 11 13:45:00 EST 2167
1000667 at Wed Dec 10 10:00:00 EST 2188
1000690 at Mon Jan 02 13:00:00 EST 2169
1000843 at Thu Feb 11 13:30:00 EST 2196
实际上,这些年份在1990 - 2006年左右。同样,小csv文件也不会发生这种情况。
有谁知道这里发生了什么以及如何解决这个问题?我需要处理大型csv文件(小文件仅用于测试目的)。
根据请求,这里是csv文件中的实际日期,之后是上面代码给出的值:
5/20/03 15:30
5/20/03 15:30
8/30/04 9:00
8/30/04 9:00
12/20/04 10:30
12/20/04 10:30
...
Sun Nov 05 15:30:00 EST 2186
Sun Nov 05 15:30:00 EST 2186
Sun Nov 05 15:30:00 EST 2186
Thu Dec 08 09:00:00 EST 2196
Tue Dec 12 10:30:00 EST 2186
Tue Dec 12 10:30:00 EST 2186