将字符串转换为 java.util.Date

2022-09-01 06:40:02

我以以下格式将日期存储在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);

我做错了什么?


答案 1

我认为您的日期格式没有意义。没有下午 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);

它打印“星期四四 4 月 29 13:00:14 CEST 2010”。


答案 2

听起来你可能想使用像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");

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