将String转换为java.util.Date

Vin*_*tti 31 java date datetime-format

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

d-MMM-yyyy,HH:mm:ss aaa
Run Code Online (Sandbox Code Playgroud)

当我用这种格式检索日期时,除了小时之外,我得到的每件事都很好.小时总是00.这是我的输出:

String date--->29-Apr-2010,13:00:14 PM
After convrting Date--->1272479414000--Thu Apr 29 00:00:14 GMT+05:30 2010
Run Code Online (Sandbox Code Playgroud)

这是代码:

    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);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Tho*_*zer 57

我认为你的日期格式没有意义.没有下午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);
Run Code Online (Sandbox Code Playgroud)

它打印"Thu Apr 29 13:00:14 CEST 2010".


azp*_*p74 5

听起来您可能想要使用类似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");
Run Code Online (Sandbox Code Playgroud)

就像纪尧姆说的那样,设置时区!