2012-12-27 265 views
0

我能夠使用適當的導入方法格式化CURRENT DATE日期,但格式化我自己的日期(例如我的生日)是另一回事。 它使用tostring方法返回它,因爲我手動格式化它。 無論如何,我的問題是:我可以使用導入格式來設置我的生日嗎?格式化日期。如何將int值格式化爲日期格式?

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()); 
    } 
} 
+0

是你的生日一番轟轟烈烈?不,它只是另一個日期,所以你可以使用相同的格式。 – Juvanis

+1

你爲什麼定義Date2類? DateFormat接口和SimpleDateFormat類只能用於java.util.Date實例。 –

回答

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(); 

} 

而要保持一致性,你應該在setter方法更新today領域也是如此。但我會建議讓這個類不可變。

無論如何,它看起來像你試圖做一些類似joda時間的東西LocalDate

+0

我試圖將自己的值(生日)分配給變量-today-,但有一堆混亂的錯誤。 – user1915702

+0

哦sh **它的作品。驚人。謝謝 – user1915702

0

我剛剛意識到,我的問題沒有任何意義,因爲它只是一個生日。而且不需要格式化它。

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; 
    } 
+0

這段代碼snipet對我來說看起來很奇怪,但我會仔細看看,稍後再嘗試實現它。謝謝 – user1915702

+0

最後一行中的assertEquals來自JUnit測試框架;重要的部分是上面的線。我馬上編輯出JUnit。 – Gus