Дата в конструкторе в Java - PullRequest
3 голосов
/ 11 декабря 2011

У меня есть класс с конструктором:

...
Date d1;
Date d2;
public DateClass(Date d1, Date d2) {
   this.d1 = d1;
   this.d2 = d2;
}
...

Затем в другом классе я хочу использовать этот конструктор:

...
DateClass d = new DateClass(what I should I write here to create Date in format mm-dd-yyyy);
System.out.println(d);
...

Спасибо!PS Это не часть домашнего задания.Я действительно не знаю, как это сделать.

Ответы [ 3 ]

6 голосов
/ 11 декабря 2011

Date не имеет формат. Это просто момент времени, без связанного с ним календаря или часового пояса. Когда вам нужно отформатировать Date, вы часто будете использовать DateFormat, который указывает системе календаря использовать, часовой пояс для перевода момента в местное время и т. Д.

Когда вы печатаете Date, как вы делаете во втором фрагменте, неявно через toString(), это будет всегда использовать системный часовой пояс по умолчанию и неизменяемый формат. (Это может измениться или не измениться в зависимости от локали системы - я не уверен). По сути, для отладки следует использовать only . Если вы хотите какой-либо контроль над текстом, DateFormat находится там, где он находится.

Если вы хотите иметь возможность просто построить значения даты из года / месяца / дня и т. Д., Я бы порекомендовал вам взглянуть на Joda Time - это гораздо более разумная дата / API времени, чем Java. Это делает все вещи намного чище, включая разделение на «местное время», «местную дату», «местную дату и время», «дату и время в определенном часовом поясе» и т. Д.

3 голосов
/ 11 декабря 2011

Вы можете создать новый Date, вызвав конструктор.

// you specify year1, month1, day1
DateClass d = new DateClass(new Date(year1-1900, month1-1, day1),
    new Date (year2-1900, month2-1, day2);

Это самый простой способ, и он наверняка сработает;однако, как правильно отмечает Карлос Хойбергер, это устарело, а это означает, что другие способы предпочтительнее.Вы также можете сделать новый от Date до DateFormat:

DateFormat df = new SimpleDateFormat("MM-dd-yyyy");
Date d1 = df.parse("12-10-2011"); // for example, today's date
Date d2 = df.parse("01-01-1900"); // use your own dates, of course

Для возможности печати в формате mm-dd-yyyy внедрите toString:

public String toString(){
    DateFormat df = new SimpleDateFormat("MM-dd-yyyy");
    return "Date 1: " + df.format(d1) + " Date 2: " + df.format(d2);
}
3 голосов
/ 11 декабря 2011

Вам необходимо использовать SimpleDateFormat (при условии, что у вас есть две даты в виде строк):

SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy");
Date d1 = format.parse(d1String);
Date d2 = format.parse(d2String);
DateClass d = new DateClass(d1, d2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...