0

適切なインポートされたメソッドを使用してCURRENT DATEの日付をフォーマットすることはできますが、自分の日付 (たとえば私の誕生日) をフォーマットすることは別の話です。手動でフォーマットしたため、 tostring メソッドで返すと機能します。とにかく、私の質問は次のとおりです。インポートを使用して誕生日をフォーマットできますか?

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

public class Date2 {

    private int month;
    private int day;
    private int year;

    private Date today = Calendar.getInstance().getTime();
    // create a short version date formatter
    private DateFormat shorFormatter = SimpleDateFormat
            .getDateInstance(SimpleDateFormat.SHORT);
    // create a long version of date format
    private DateFormat longFormattter = SimpleDateFormat
            .getDateInstance(SimpleDateFormat.LONG);
    // create date time formatter, medium for day, long for time
    private DateFormat mediuFormattter = SimpleDateFormat.getDateTimeInstance(
            SimpleDateFormat.MEDIUM, SimpleDateFormat.LONG);

    /************ Constructors ***************/

    public Date2() {
    }

    public Date2(int dd, int mm, int yyyy) {
        this.day = dd;
        this.month = mm;
        this.year = yyyy;

    }

    /************ Getters setters ************/

    public Date getToday() {
        return today;
    }

    public String getShorFormatter() {
        return shorFormatter.format(today);
    }

    public String getLongFormattter() {
        return longFormattter.format(today);
    }

    public String getMediuFormattter() {
        return mediuFormattter.format(today);
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    public int getDay() {
        return day;
    }

    public void setDay(int day) {
        this.day = day;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public String tosString() {
        return month + "/" + day + "/" + year;
    }
}

public class DateFormatTest {
public static void main(String[] args) {
        Date2 date2 = new Date2(23, 05, 1973);
        System.out.println(date2.getShorFormatter());
        System.out.println(date2.getLongFormattter());
        System.out.println(date2.getMediuFormattter());
        System.out.println(date2.tosString());
    }
}
4

3 に答える 3

0

ただ誕生日なので、私の質問は意味がありません。また、フォーマットする必要はありません。

于 2012-12-27T19:26:10.500 に答える
0

これはどうですか:

    public String getBirthday() {
      Calendar cal = Calendar.getInstance(Locale.getDefault());
      cal.set(Calendar.DAY_OF_MONTH, 23);
      cal.set(Calendar.MONTH,Calendar.MAY);
      cal.set(Calendar.YEAR,1973);
      //http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
      DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
      String birthdayString = df.format(cal.getTime());//05/23/1975
      return birthdayString;
    }
于 2012-12-27T19:36:17.183 に答える
0

getXXXFormatter()メソッドはtodayフィールドのみを使用し、コンストラクターはそのフィールドを変更しないためDate2(int, int, int)、常に今日の日付をフォーマットします。

そのコンストラクターを次のように変更したい場合があります。

public Date2(int dd, int mm, int yyyy) {
    this.day = dd;
    this.month = mm;
    this.year = yyyy;

    Calendar calendar = Calendar.getInstance();
    calendar.set(yyyy, mm - 1, dd);
    today = calendar.getTime();

}

todayまた、一貫性を保つために、セッターのフィールドも更新する必要があります。ただし、このクラスを不変にすることをお勧めします。

どう見ても、joda time のLocalDate.

于 2012-12-27T19:28:55.743 に答える