2

在我的 Java 应用程序中,我使用的是 Mysql,它以yyyy-MM-dd hh:mm:ss. 虽然我需要格式dd-MM-yyyy hh:mm a。转换确实发生在 Hibernate VO 类中。

为此,我这样做:

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CREATED_DATE")
private Date createdDate = new Date();

public Date getCreatedDate() {
    Date date = null;
    try {
        date = new SimpleDateFormat("dd/MM/yyyy hh-mm a")
                .parse(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(createdDate));
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return date;
}

public void setCreatedDate(Date createdDate) {
    this.createdDate = createdDate;
}

但它确实给出了 Parse 异常。

java.text.ParseException: Unparseable date: "2013-05-06 01:39:00"
    at java.text.DateFormat.parse(DateFormat.java:354)
    at com.sits.ec.valueObjects.MessageBoxVO.getCreatedDate(MessageBoxVO.java:64)

谁能给我一个建议?

4

7 回答 7

1

尝试:

import java.util.*;
import java.text.*;

public class Example {
    public static void main(String[] args) {
        Date now = new Date();
        SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy hh:mm a")
        String s = df.format(now);
        System.out.println("Today is: " + s);
    }
}
于 2013-06-24T11:40:29.950 回答
1

这就是您的代码的根本错误:它接受 aDate并返回 a DateDate与字符串无关,它代表一个绝对的时间瞬间。如果您至少获得了正确的外部 API,我们也许可以提出一个实现。

于 2013-06-24T11:42:48.910 回答
1

试试这个:

String time=new SimpleDateFormat("yyyy.MM.dd").format(Calendar.getInstance().getTime());
于 2013-06-24T11:55:40.537 回答
0

首先,为什么要格式化日期并再次解析以取回日期对象?您可以直接使用实际的日期对象。

其次,您使用 格式化日期,format1然后尝试使用 解析该日期format2,这与format1. 因此,ParseException.

这就是你需要的。

public Date getCreatedDate() {
    return createdDate;
}
于 2013-06-24T11:39:23.420 回答
0

因为您试图将日期格式的字符串表示解析yyyy-MM-dd hh:mm:ss为这种dd/MM/yyyy hh-mm a日期格式。你希望它如何工作?

表示必须匹配。

于 2013-06-24T11:41:01.640 回答
0

只试
String dateString = new SimpleDateFormat("dd-MM-yyyy hh:mm a").format(createdDate);
没有什么需要的了。

于 2013-06-24T11:41:18.047 回答
0

return createdDate;是你所需要的全部。

Date将对象格式化为 aString然后将其解析String回对象是没有意义的Date

顺便说一句,如果您对解析和格式化操作使用相同的格式模式,它会起作用。

更新:如果您希望日期为格式化字符串,您可以使用:

public String getCreatedDateAsString() {
    return new SimpleDateFormat("dd-MM-yyyy hh:mm a").format(createdDate);
}

java.util.Date仅代表自格林威治标准时间 1.1.1980 以来的一毫秒,并且对时间格式和类似的东西一无所知。

于 2013-06-24T11:41:33.280 回答