Java 格式化日期以获取特定格式的日期
我正在尝试格式化日期以获取特定格式的日期。但是它不起作用。不知道为什么!以下是我所做的:Java 格式化日期以获取特定格式的日期,java,date,formatting,Java,Date,Formatting,我正在尝试格式化日期以获取特定格式的日期。但是它不起作用。不知道为什么!以下是我所做的: for(LeaveApply leaveApply : leaveApplyList) { SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); try { leaveApply.setDate(dateF
for(LeaveApply leaveApply : leaveApplyList) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
try {
leaveApply.setDate(dateFormat.parse(dateFormat.format(leaveApply.getDate())));
} catch (ParseException e) {
e.printStackTrace();
}
}
输出为:
LeaveApply [id=1, user=id [1]; loginName [admin], leaveType=Medical Leave, leaveTime=Half Leave, date=Fri Apr 15 00:00:00 IST 2011]
LeaveApply [id=0, user=id [1]; loginName [admin], leaveType=Weekend, leaveTime=Full Leave, date=Sat Apr 02 00:00:00 IST 2011]
LeaveApply [id=0, user=id [1]; loginName [admin], leaveType=Weekend, leaveTime=Full Leave, date=Sun Apr 03 00:00:00 IST 2011]
LeaveApply [id=0, user=id [1]; loginName [admin], leaveType=Weekend, leaveTime=Full Leave, date=Sat Apr 09 00:00:00 IST 2011]
LeaveApply [id=0, user=id [1]; loginName [admin], leaveType=Weekend, leaveTime=Full Leave, date=Sun Apr 10 00:00:00 IST 2011]
LeaveApply [id=0, user=id [1]; loginName [admin], leaveType=Weekend, leaveTime=Full Leave, date=Sat Apr 16 00:00:00 IST 2011]
LeaveApply [id=0, user=id [1]; loginName [admin], leaveType=Weekend, leaveTime=Full Leave, date=Sun Apr 17 00:00:00 IST 2011]
LeaveApply [id=0, user=id [1]; loginName [admin], leaveType=Weekend, leaveTime=Full Leave, date=Sat Apr 23 00:00:00 IST 2011]
LeaveApply [id=0, user=id [1]; loginName [admin], leaveType=Weekend, leaveTime=Full Leave, date=Sun Apr 24 00:00:00 IST 2011]
LeaveApply [id=0, user=id [1]; loginName [admin], leaveType=Weekend, leaveTime=Full Leave, date=Sat Apr 30 00:00:00 IST 2011]
如您所见,日期不是所需的格式(dd-MM-yyy)。任何帮助都是值得的。
LeaveApply类是:
public class LeaveApply implements Serializable {
private static final long serialVersionUID = -7223672229309295181L;
private long id;
private User user;
private String leaveType;
private String leaveTime;
private Date date;
public LeaveApply() {
}
public LeaveApply(User user, String leaveType, String leaveTime, Date date) {
super();
this.user = user;
this.leaveType = leaveType;
this.leaveTime = leaveTime;
this.date = date;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getLeaveType() {
return leaveType;
}
public void setLeaveType(String leaveType) {
this.leaveType = leaveType;
}
public String getLeaveTime() {
return leaveTime;
}
public void setLeaveTime(String leaveTime) {
this.leaveTime = leaveTime;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "LeaveApply [id=" + id + ", user=" + user + ", leaveType=" + leaveType + ", leaveTime=" + leaveTime + ", date=" + date + "]";
}
}
我将列表打印为:
for (LeaveApply leaveApply : leaveApplyList) {
System.out.println(leaveApply);
}
打印字符串时,需要使用SimpleDataFormat格式化字符串。您的代码现在所做的是:
- 获取时间戳
- 格式化
- 将格式化字符串解析回时间戳
- 设置时间戳
此外,在打印时间戳的地方,使用默认的日期格式。您应该使用在该点格式化的日期。打印字符串时,需要使用SimpleDataFormat格式化字符串。您的代码现在所做的是:
- 获取时间戳
- 格式化
- 将格式化字符串解析回时间戳
- 设置时间戳
此外,在打印时间戳的地方,使用默认的日期格式。您应该使用在该点格式化的日期。格式化时,您将在字符串中获得所需的格式,当您将其解析回时,您将获得日期对象,它将执行
toString()
,因此您将始终获得默认格式 格式化时,您将在字符串中获得所需的格式,当您重新解析它时,您将获得日期对象,它将执行toString()
,因此您将始终获得默认格式 在您的LeaveApply.toString()
实现中调用SimpleDataFormat.format(Date)
,以获得所需的输出。在您的LeaveApply.toString()实现中调用SimpleDataFormat.format(Date)
,以获得所需的输出。我很困惑-您从日期开始,将其转换为字符串,然后将其解析回日期。为什么?只需使用原始日期,对吗?“leaveApply.getDate();”的格式是什么?@MeBigFatGuy谢谢。我这样做是因为所有日期的格式不同。一些日期是“E MMM dd 00:00:00 Z”,另一个是“yyyy MM dd 00:00:00.0”。但是leaveApply.getDate()返回一个java.util.date对象,对吗?@Harry Joy我没有为leaveApply对象的date属性字段维护任何格式,它是一个简单的日期类型。我很困惑-你从一个日期开始,把它转换成字符串,然后将其解析回日期。为什么?只需使用原始日期,对吗?“leaveApply.getDate();”的格式是什么?@MeBigFatGuy谢谢。我这样做是因为所有日期的格式不同。有些日期是“E MMM dd 00:00:00 Z”,另一些是“yyyy MM dd 00:00:00.0”。但是leaveApply.getDate()返回一个java.util.date对象,对吗?@Harry Joy我没有为leaveApply对象的日期属性字段维护任何格式,它只是一个简单的日期类型。