在我的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)
有人可以给我一个建议吗?
答案 0 :(得分: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);
}
}
答案 1 :(得分:1)
这是您的代码根本出现的问题:它接受Date
并重新调整Date
。 Date
与字符串无关,它代表了一个绝对的时刻。如果您至少获得了外部API,我们可能会提出实施建议。
答案 2 :(得分:1)
试试这个:
String time=new SimpleDateFormat("yyyy.MM.dd").format(Calendar.getInstance().getTime());
答案 3 :(得分:0)
首先,为什么要格式化日期并再次解析它以取回日期对象?您可以直接使用实际日期对象。
其次,您要使用format1
格式化日期,然后尝试使用format2
解析该日期,这与format1
不同。因此,ParseException
。
这就是你需要的。
public Date getCreatedDate() {
return createdDate;
}
答案 4 :(得分:0)
因为您尝试将yyyy-MM-dd hh:mm:ss
日期格式的字符串表示解析为此dd/MM/yyyy hh-mm a
日期格式。您希望如何工作?
表示必须匹配。
答案 5 :(得分:0)
只尝试
String dateString = new SimpleDateFormat("dd-MM-yyyy hh:mm a").format(createdDate);
没有什么需要了。
答案 6 :(得分:0)
return createdDate;
就是你所需要的。
将Date
对象格式化为String
,然后将String
解析回Date
对象是没有意义的。
顺便说一句,如果您使用相同的格式模式进行解析和格式化操作,那么它将起作用。
更新:如果您希望Date为格式化字符串,您可以使用:
public String getCreatedDateAsString() {
return new SimpleDateFormat("dd-MM-yyyy hh:mm a").format(createdDate);
}
java.util.Date
仅仅代表自格林威治标准时间1.1.1980以来的一毫秒时间,并且对时间格式和类似事物一无所知。