Форматирование даты для получения даты определенного формата - PullRequest
0 голосов
/ 15 апреля 2011

Я пытаюсь отформатировать дату, чтобы получить дату определенного формата.Однако это не работает.Не знаю почему!Вот что я сделал:

           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]

Как видите, дата не в нужном формате (дд-мм-гггг).Любая помощь будет ощутимой.Класс 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);
}

Ответы [ 3 ]

2 голосов
/ 15 апреля 2011

Вызовите SimpleDateFormat.format(Date) в вашей LeaveApply.toString() реализации для получения желаемого результата.

2 голосов
/ 15 апреля 2011

Вам необходимо использовать SimpleDateFormat для форматирования строки при ее печати.Теперь ваш код:

  • получает метку времени
  • форматирует ее
  • анализирует отформатированную строку обратно на метку времени
  • устанавливает метку времени

Это довольно дорогое отсутствие операции, поскольку объект Date содержит только long, представляющий метку времени, но не форматирует информацию.

Далее, где вы печатаете метку времени, выиспользуйте формат даты по умолчанию.Вместо этого вам следует использовать дату, отформатированную в этот момент.

1 голос
/ 15 апреля 2011

Когда вы форматируете, вы получите желаемый формат в строке, когда вы проанализируете его, вы получите объект Date, и он выполнит toString(), поэтому вы всегда получите формат по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...