Я ищу дату, используя объект календаря.отображение даты с использованием объекта календаря
public abstract class Employee implements EmployeeInfo {
protected String firstName;
protected String lastName;
protected String idNumber;
Calendar birthday = Calendar.getInstance();
protected char gender;
public Employee()
{
firstName = "";
lastName = "";
idNumber = "";
gender = ' ';
birthday.set(Calendar.MONTH, 0);
birthday.set(Calendar.DAY_OF_MONTH, 00);
birthday.set(Calendar.YEAR, 0000);
}
public Employee(String first, String last, String id, char gen, int month, int day, int year)
{
firstName = first;
lastName = last;
idNumber = id;
gender = gen;
birthday.set(Calendar.MONTH, month);
birthday.set(Calendar.DAY_OF_MONTH, day);
birthday.set(Calendar.YEAR, year);
}
public Calendar getBirthday() {
return birthday;
}
public void setBirthday(int month, int day, int year, Calendar birthday) throws ParseException {
birthday = Calendar.getInstance();
birthday.set(Calendar.MONTH, month);
birthday.set(Calendar.DAY_OF_MONTH, day);
birthday.set(Calendar.YEAR, year);
SimpleDateFormat formatted = new SimpleDateFormat("MM/dd/yyyy");
String date = month + "/" + day + "/" + year;
Date birth = formatted.parse(date);
birthday.setTime(birth);
this.birthday = birthday;
}
public String toSring()
{
return "ID Employee Number: " + idNumber + "\n" + "Employee name: " + firstName + " "
+ lastName + "\n" + "Birth date: " + birthday + "\n";
}
public abstract double getMonthlyEarning();
public class Staff extends Employee {
protected double hourlyRate;
public Staff()
{
super();
hourlyRate = 0.0;
}
public Staff(String first, String last, String ID, char gen1, int month, int day, int year, double rate)
{
super(first, last, ID, gen1, month, day, year);
hourlyRate = rate;
}
}
... и ...
public class Test {
public static void main(String[] args) {
Employee[] employees = new Employee[2];
employees[0] = new Staff("Minh", "Vu", "123", 'M', 3,06,1997, 50.00);
employees[1] = new Staff("Mike", "Nguyen", "456", 'M', 5,18,1977, 65.00);
for(Employee member : employees)
{
System.out.println(member);
System.out.println("------------------------------------------");
}
}
}
Проблема я столкнулся почему дата рождения в следующем выходе дает мне неизвестное, до смешного длинную строку:
Номер ID сотрудников: 123
Имя сотрудника: Minh Vu
Дата рождения: java.util.GregorianCa lendar [время = ?, areFieldsSet = ложь, areAllFieldsSet = верно, мягок = верно, зона = sun.util.calendar.ZoneInfo [ID = "Америка/Los_Angeles", смещение = -28800000, dstSavings = 3600000, useDaylight = верно, переходы = 185, lastRule = java.util.SimpleTimeZone [ID = Америка/Los_Angeles, смещение = -28800000, dstSavings = 3600000, useDaylight = верно, StartYear = 0, StartMode = 3, StartMonth = 2, startDay = 8, startDayOfWeek = 1, начальный промежуток = 7200000, startTimeMode = 0, endMode = 3, endMonth = 10, endDay = 1, endDayOfWeek = 1, EndTime = 7200000, endTimeMode = 0]], firstDayOfWeek = 1, minimalDaysInFirstWeek = 1, ЭРА = 1, ГОД = 1997 МЕСЯЦ = 3, WEEK_OF_YEAR = 6, WEEK_OF_MONTH = 2, DAY_OF_MONTH = 6, day_of_year = 37, DAY_OF_WEEK = 2, DAY_OF_WEEK_IN_MONTH = 1, AM_PM = 1, ЧАС = 2, HOUR_OF_DAY = 0, МИНУТНЫЙ = 0, ВТОРОЙ = 0, миллисекунды = 0, ZONE_OFFSET = -28800000, DST_OFFSET = 0]
Full Time
месяц LY зарплата: $ 8000,0
ID Количество сотрудников: 456
Имя сотрудника: Майк Нгуен
Дата рождения: java.util.GregorianCalendar [время = ?, areFieldsSet = ложь, areAllFieldsSet = истина, мягок = верно, зона = sun.util.calendar.ZoneInfo [ID = "Америка/Los_Angeles", смещение = -28800000, dstSavings = 3600000, useDaylight = верно, переходы = 185, lastRule = java.util.SimpleTimeZone [ID = Америка/Los_Angeles, смещение = -28800000, dstSavings = 3600000, useDaylight = верно, StartYear = 0, StartMode = 3, StartMonth = 2, startDay = 8, startDayOfWeek = 1, = 7200000 начальный промежуток, startTimeMode = 0, endMode = 3, endMonth = 10, endDay = 1, endDay OfWeek = 1, EndTime = 7200000, endTimeMode = 0]], firstDayOfWeek = 1, minimalDaysInFirstWeek = 1, ЭРА = 1, ГОД = 1977, МЕСЯЦ = 5, WEEK_OF_YEAR = 6, WEEK_OF_MONTH = 2, DAY_OF_MONTH = 18, day_of_year = 37, DAY_OF_WEEK = 2, DAY_OF_WEEK_IN_MONTH = 1, AM_PM = 1, ЧАС = 2, HOUR_OF_DAY = 0, МИНУТНЫЙ = 0, ВТОРОЙ = 0, миллисекунды = 0, ZONE_OFFSET = -28800000, DST_OFFSET = 0]
Полный день
Ежемесячная зарплата: $ 10400,0
на основе моего анализа, я считаю, что я должен использовать создать объект из класса SimpleDateFormat и поставить «MM/DD/YYYY» в параметре. Тем не менее, я должен проанализировать объект SimpleDateFormat, создав объект Date. Я хотел бы использовать класс Calendar для создания объекта date.
Когда я был отлажен, я заметил, что отображение даты рождения было неправильным; он печатал все в моем объекте рождения. Я не уверен, что делать. Помощь будет принята с благодарностью. :)
SimpleDateFormat не является потокобезопасным, поэтому лучше не объявлять это поле как статическое поле. Лучшим решением является использование форматирования JodaTime, потому что он потокобезопасен. Без времени joda лучший способ - создать экземпляр SimpleDateFormat каждый раз, когда вам нужно использовать его в контексте метода, или синхронизировать статический экземпляр форматирования. – Pavel
Или просто объявите форматирование в качестве члена экземпляра. Но предложение сделать его локальным объектом лучше. –