Как я могу создать объект Date с определенным форматом

String testDateString = "02/04/2014";
DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 

Date d1 = df.parse(testDateString);
String date = df.format(d1);

Строка вывода:

02/04/2014

Теперь мне нужно, чтобы дата d1 была отформатирована таким же образом («02/04/2014»).


person user2243468    schedule 23.08.2014    source источник
comment
что вы хотите на выходе? длинное значение?   -  person vipul mittal    schedule 23.08.2014
comment
возможный дубликат Преобразовать строку в дату в java   -  person ovi    schedule 23.08.2014
comment
Опишите, какой результат вы ожидаете / хотите получить.   -  person Or B    schedule 23.08.2014


Ответы (2)


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

import java.text.SimpleDateFormat;
import java.util.Date;

public class MyDate extends Date {
    private final SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");

    public MyDate() { }

    public MyDate(Date source) {
        super(source.getTime());
    }

    // ...

    @Override
    public String toString() {
        return dateFormat.format(this);
    }
}

Теперь вы можете создать этот класс, как раньше с Date, и вам не нужно каждый раз создавать SimpleDateFormat.

public static void main(String[] args) {
    MyDate date = new MyDate();
    System.out.println(date);
}

Результат - 23/08/2014.

Это обновленный код, который вы разместили в своем вопросе:

String testDateString = "02/04/2014";
DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 

MyDate d1 = new MyDate(df.parse(testDateString));
System.out.println(d1);

Обратите внимание, что вам больше не нужно вызывать df.format(d1), d1.toString() вернет дату в виде сформированной строки.

person Tom    schedule 23.08.2014

Попробуйте вот так:

    SimpleDateFormat sdf =  new SimpleDateFormat("dd/MM/yyyy");

    Date d= new Date(); //Get system date

    //Convert Date object to string
    String strDate = sdf.format(d);

    //Convert a String to Date
    d  = sdf.parse("02/04/2014");

Надеюсь, это поможет вам!

person Krupa Patel    schedule 23.08.2014
comment
В чем разница между вашим кодом и кодом, опубликованным OP? - person Tom; 23.08.2014
comment
А зачем результат parse приводить к дате? Он возвращает объект Date. - person Tom; 23.08.2014
comment
Мне не нужны эти выходные данные среды, 2 апреля, 00:00:00 по Гринвичу 2014 г. Мне нужно 02.04.2014 - person user2243468; 23.08.2014
comment
@ user2243468, и вы получите его, используя опубликованный вами код. Теперь проблема? Этот date2 (или ваш d1) не будет печатать нужный вам формат изначально? Для этого вам нужно создать свой собственный класс MyDate, который расширит класс Date, и там вы переопределите метод toString. Там вы можете отформатировать свой вывод так, как хотите. - person Tom; 23.08.2014