【问题标题】:Parse a date string stored in Excel file解析存储在 Excel 文件中的日期字符串
【发布时间】:2014-03-12 06:42:05
【问题描述】:
我无法解析存储在 Excel 文件中的日期。
我的代码sn-ps如下:
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
Date parsed = format.parse(row.getCell(1).toString());
Date jdate = format.parse(row.getCell(4).toString());
我的错误是:
无法解析日期 08-Jun-2012。
在 Excel 文件中,日期存储为 08-06-2012。但它以 2013 年 6 月 8 日为准。
【问题讨论】:
标签:
java
date
formatting
simpledateformat
【解决方案1】:
检查您的 Excel 文件中的日期格式。它可能是 DD-Mmm-YYYY。通过将其更改为 DD-MM-YYYY 你可以解析我猜。
【解决方案2】:
使字符串显式
调试时,拆开复杂的语句来验证各个部分。在这种情况下,将这些行 getter 调用移动到单独的行,将值分配给 String 变量。
小心使用格式化程序
您需要仔细研究格式化程序的文档,然后仔细检查模式字符。
在你的情况下:
- “dd-MM-yyyy”的格式是数字月份
- “dd-MMM-yyyy”格式是月份的文本(月份名称)
示例代码
String inputDigits = "08-06-2012";
String inputChars = "08-Jun-2013";
java.text.SimpleDateFormat formatDigits = new java.text.SimpleDateFormat( "dd-MM-yyyy" );
java.text.SimpleDateFormat formatChars = new java.text.SimpleDateFormat( "dd-MMM-yyyy" );
java.util.Date dateDigits = null;
java.util.Date dateChars = null;
try {
dateDigits = formatDigits.parse( inputDigits );
dateChars = formatChars.parse( inputChars );
} catch ( ParseException ex ) {
Logger.getLogger( App.class.getName() ).log( Level.SEVERE, null, ex );
}
转储到控制台...
System.out.println( "dateDigits: " + dateDigits );
System.out.println( "dateChars: " + dateChars );
运行时……
dateDigits: Fri Jun 08 00:00:00 PDT 2012
dateChars: Sat Jun 08 00:00:00 PDT 2013
【解决方案3】:
你可以试试这个:-
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
String dat="08-Jun-2013";
SimpleDateFormat format=new SimpleDateFormat("dd-MMM-yyyy");
java.util.Date dt=format.parse(dat);
System.out.println("Parsed Date :: "+dt);
}
它的展示 - Sat Jun 08 00:00:00 IST 2013
使用dd-MMM-yyyy 而不是dd-MM-yyyy。
希望对你有所帮助。