解析存储在Excel文件中的日期字符串

时间:2014-03-12 06:42:05

标签: java date formatting simpledateformat

我无法解析存储在Excel文件中的日期。 我的代码片段如下:

SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
Date parsed = format.parse(row.getCell(1).toString());
Date jdate = format.parse(row.getCell(4).toString());

我的错误是:

  

无法解析2012年6月8日的日期。

在Excel文件中,日期存储为08-06-2012。但它需要它作为2013年6月8日。

3 个答案:

答案 0 :(得分:0)

检查excel文件中的日期格式。它可能是DD-Mmm-YYYY。通过将其更改为DD-MM-YYYY,我可以解析。

答案 1 :(得分:0)

使字符串显式

调试时,撕开复杂的语句以验证碎片。在这种情况下,将那些行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

答案 2 :(得分:0)

你可以试试这个: -

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);
    }

它的展示 - 2013年6月8日00:00:00 IST 2013

使用dd-MMM-yyyy代替dd-MM-yyyy

希望它会对你有所帮助。