2012-12-20 305 views
3

即时得到的SQL Server日期时间(2013年1月1日)形成的myBeanSqlRowSet解析日期时间到JAVA日期

while (rs.next()) { 
myBean.setDateProp(rs.getString(4)); 
} 

类型DatePropjava.util.Date,是有办法(1 Jan 2013)转换成Java日期表示。

我曾尝试下面的代码

SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss.SSS"); 
Date date=new Date();   
    try { 
     date = sdf.parse("1 Jan 2013");   
    } catch (Exception e) { 
     e.printStackTrace(); 

    }  

,我也得到了ParseException

重度:java.text.ParseException:无法解析的日期: “2013年1月1日”

任何方向......

+0

_i曾尝试以下code_发生了什么后?你有什么异常? –

+3

为什么你使用rs.getString()而不是rs.getDate()? – Charlie

+1

当你的日期字符串看起来像'2013年1月1日'时,为什么你使用格式'dd-MMM-yyyy HH:mm:ss.SSS'?很明显,字符串的格式不是你正在使用的。 – Jesper

回答

6

试试这个 -

SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy"); 
Date date=new Date();   
try { 
    date = sdf.parse("1 Jan 2013");   
}catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

,几乎工作的解析做OK,但是当它被转换为Java迄今为止,它表明我'星期二1月1日00:00:00 PKT 2013' – dakait

+0

什么办法可以格式化输出太'1月1日2013' – dakait

+0

不打印'java.util.Date'对象。打印格式化的字符串。 LYK - '的System.out.println(sdf.format(日期));' –

2

尝试

while (rs.next()) { 
myBean.setDateProp(rs.getDate(4)); 
} 
+0

我试过了,但数据库服务器格式是日期时间,所以它给了我错误,没有在索引4找到日期 – dakait

+0

声音可疑。无论如何,请尝试rs.getTimestamp(4)。 –

1

您需要修改日期格式字符串

SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy"); 

为您的日期字符串的格式如下

2
@Test 
    public void test() throws ParseException { 

     String dateString = "1 Jan 2013"; 
     String dateString2 = "11 Jan 2013"; 
     SimpleDateFormat sdf = new SimpleDateFormat("d MMM yyyy"); 


     sdf.parse(dateString); 
     sdf.parse(dateString2); 
    }