我可以使用适当的导入方法格式化 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());
}
}
答案 0 :(得分:0)
我只是意识到,我的问题没有任何意义,因为它只是一个诞生日。而且无需格式化。
答案 1 :(得分: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 time LocalDate
的东西。
答案 2 :(得分: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;
}