将String转换为java.util.Date

我将日期存储在SQLite数据库中,格式如下:

d-MMM-yyyy,HH:mm:ss aaa 

当我用那种格式检索日期时,除了小时之外,我得到的一切都很好。 小时总是00 。 这是我的输出:

 String date--->29-Apr-2010,13:00:14 PM After convrting Date--->1272479414000--Thu Apr 29 00:00:14 GMT+05:30 2010 

这是代码:

  Date lScheduledDate = CalendarObj.getTime(); DateFormat formatter = new SimpleDateFormat("d-MMM-yyyy,HH:mm:ss aaa"); SomeClassObj.setTime(formatter.format(lScheduledDate)); String lNextDate = SomeClassObj.getTime(); DateFormat lFormatter = new SimpleDateFormat("d-MMM-yyyy,HH:mm:ss aaa"); Date lNextDate = (Date)lFormatter.parse(lNextDate); System.out.println("output here"+lNextDate); 

我究竟做错了什么?

我认为你的日期格式没有意义。 没有下午13:00。 删除格式末尾的“aaa”或将HH变为hh。

不过,这对我来说很好:

 String testDate = "29-Apr-2010,13:00:14 PM"; DateFormat formatter = new SimpleDateFormat("d-MMM-yyyy,HH:mm:ss aaa"); Date date = formatter.parse(testDate); System.out.println(date); 

它打印“Thu Apr 29 13:00:14 CEST 2010”。

听起来你可能想要使用像SimpleDateFormat这样的东西。 http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

您声明日期格式,然后使用您的字符串调用parse方法。

 private static final DateFormat DF = new SimpleDateFormat(...); Date myDate = DF.parse("1234"); 

正如纪尧姆所说,设定时区!

您应该在DateFormat中设置TimeZone,否则它将使用默认值(取决于计算机的设置)。