日期格式丢失

时间:2016-12-14 00:25:49

标签: java date format

有很多帖子涵盖了这个主题,但是我将它们调整为我的代码我找不到合适的答案。

try (BufferedReader br = new BufferedReader(new FileReader(path));)
{           
        String line = "";

        Person tempPerson = null;
        String dateFormat = "dd-MM-yyyy";
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        Date tempBirthdayDate = null;

        while ((line = br.readLine()) != null) 
        {               
            String[] splitFormat = line.split("/");
            for (String s : splitFormat)
            {
                String[] datamember = s.split(", ");

                //Some more stuff...

                tempBirthdayDate = sdf.parse(datamember[3]);
                sdf.format(tempBirthdayDate);
                sdf.applyPattern(dateFormat);

                //Some more stuff...

            }

            tempPerson = new Person(...,...,...,tempBirthdayDate,...,...);
        }
}

Person.java复制构造函数:

public Person(..., ..., ..., Date birthdayDate, ..., ...)
{
    this.xxx = ...;
    this.xxx = ...;
    this.xxx = ...;
    this.birthdayDate = birthdayDate;
    this.xxx = adresse;
    this.xxx = ...;
}

那些“......”只是占位符来缩短代码。在源文件(.txt)中,日期与我在那里定义的格式相同。但是,只要我在birthdayDate上调用toString() - Method,我就会得到以下结果: 1993年5月26日: 5月26日星期三00:00:00 CEST 1993.感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

Date对象的toString方法不受初始化的SimpleDateFormat的影响。

您需要创建一个自定义类来扩展Date并覆盖toString方法

public class CustomDate extends Date {
        ......
        @Override
        public String toString(){
            return new SimpleDateFormat("dd-MM-yyyy").format(this);
        }
}

In Person构造函数

public Person(..., ..., ..., CustomDate birthdayDate, ..., ...)
{
    this.xxx = ...;
    this.xxx = ...;
    this.xxx = ...;
    this.birthdayDate = birthdayDate;
    this.xxx = adresse;
    this.xxx = ...;
}

你现在可以在birthdayDate上调用toString并获得你想要的格式