カレンダーオブジェクトを使用して日付を表示することを検討しています。カレンダーオブジェクトを使用して日付を表示する
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 lenient = true、lenient = true、zone = sun.util.calendar.ZoneInfo [id = "America/Los_Angeles"、オフセット= -28800000、dstSavings = 3600000、useDaylight = true、トランジション= 185、lastRule = java.util.SimpleTimeZone [id = America/Los_Angeles、offset = -28800000、dstSavings = 3600000、useDaylight = true、startYear = 0、startMode = 3、startMonth = 2、startDay = 8、startDayOfWeek = 1、 firstDayOfWeek = 1、minimalDaysInFirstWeek = 1、ERA = 1、YEAR = 1997、および、endTime = 1、endDayOfWeek = 1、endDayOfWeek = 1、endTime = 7200000、endTimeMode = 0] HOUSE = 2、HOUR_OF_DAY = 0、MINUTE = 0、SECOND = 0、MILLISECOND = 2、DAY_OF_YEAR = 0、ZONE_OFFSET = -28800000、DST_OFFSET = 0]
正社員
月LY給与:$ 8000.0
ID従業員の数:456
社員名:マイク・グエン
生年月日:java.util.GregorianCalendar [時間= ?, areFieldsSet = falseを、areAllFieldsSet =真、 lenient = true、zone = sun.util.calendar.ZoneInfo [id = "America/Los_Angeles"、オフセット= -28800000、dstSavings = 3600000、useDaylight = true、トランジション= 185、lastRule = java.util.SimpleTimeZone [id = America StartMode = 3、endMonth = 3、endMonth = 3、endMonth = 3、endMonth = 2、startDayOfWeek = 1、startTime = 7200000、startTimeMode = 0、startMode = 3、endMonth = 10、endDay = 1、endDay 1、ERA = 1、YEAR = 1977、MONTH = 5、WEEK_OF_YEAR = 6、WEEK_OF_MONTH = 2、DAY_OF_MONTH = 18、DAY_OF_YEAR = 37、DAY_OF_YEAR = 37、DAY_OF_ONE = DAY_OF_WEEK = 2、DAY_OF_WEEK_IN_MONTH = 1、AM_PM = 1、HOUR = 2、HOUR_OF_DAY = 0分= 0、SECOND = 0ミリ秒= 0、ZONE_OFFSET = -28800000、DST_OFFSET = 0]
正社員
月給:私の分析に基づいて$ 10400.0
、私はSimpleDateFormatのクラスからオブジェクトを作成し、パラメータに「MM/DD/YYYY」を置く使用する必要があると考えています。しかし、私はDateオブジェクトを作成してSimpleDateFormatオブジェクトを解析する必要があります。 Calendarオブジェクトを作成するためにCalendarクラスを使用したいと思います。
私がデバッグしていたとき、私は誕生日の表示が間違っていたことに気付きました。それは私の誕生日オブジェクト内のすべてを印刷しました。私は何をすべきか分からない。助けが大いに評価されるだろう。 :)
SimpleDateFormatはスレッドセーフではありません。したがって、このフィールドを静的フィールドとして宣言することはお勧めしません。最適な解決策は、スレッドセーフなのでJodaTimeフォーマッタを使用することです。 joda timeを使用しないと、メソッドコンテキストで使用するたびにSimpleDateFormatインスタンスを作成したり、フォーマッタの静的インスタンスを同期させたりすることをお勧めします。 – Pavel
または、フォーマッタをインスタンスメンバとして宣言するだけです。しかし、それをローカルオブジェクトにするという提案は良いです。 –