我有一个带构造函数的类:
...
Date d1;
Date d2;
public DateClass(Date d1, Date d2) {
this.d1 = d1;
this.d2 = d2;
}
...
然后在另一个类中我想使用这个构造函数:
...
DateClass d = new DateClass(what I should I write here to create Date in format mm-dd-yyyy);
System.out.println(d);
...
谢谢! P.S这不是家庭作业的一部分。我真的不知道该怎么做。
答案 0 :(得分:6)
Date
没有格式。它只是一个瞬间,没有相关的日历或时区。当您需要格式化Date
时,通常会使用DateFormat
告知日历系统使用,将时刻转换为本地时间等。
当您在第二个代码段中打印Date
时,隐式地通过toString()
,总是使用系统默认时区,并且不可修改的格式。 (它可能会或可能不会随系统区域设置而改变 - 我不确定)。基本上应该仅用于调试。如果您想对文本进行任何控制,DateFormat
就是它所在的位置。
如果您希望能够简单地构建年/月/日等的日期值,我建议您查看Joda Time - 这是一个更加安全的日期/时间API比起Java。它使各种事情变得更加清晰,包括“当地时间”,“当地日期”,“当地日期和时间”,“特定时区的日期和时间”等的分离。
答案 1 :(得分:3)
您需要使用SimpleDateFormat(假设您将两个日期作为字符串):
SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy");
Date d1 = format.parse(d1String);
Date d2 = format.parse(d2String);
DateClass d = new DateClass(d1, d2);
答案 2 :(得分:3)
您可以通过调用构造函数来创建新的Date
。
// you specify year1, month1, day1
DateClass d = new DateClass(new Date(year1-1900, month1-1, day1),
new Date (year2-1900, month2-1, day2);
这是最简单的方法,肯定会奏效;然而,正如Carlos Heuberger正确指出的那样,这已被弃用,这意味着其他方式更受欢迎。您还可以制作新的Date
到DateFormat
:
DateFormat df = new SimpleDateFormat("MM-dd-yyyy");
Date d1 = df.parse("12-10-2011"); // for example, today's date
Date d2 = df.parse("01-01-1900"); // use your own dates, of course
为了能够以mm-dd-yyyy
格式进行打印,请实施toString
:
public String toString(){
DateFormat df = new SimpleDateFormat("MM-dd-yyyy");
return "Date 1: " + df.format(d1) + " Date 2: " + df.format(d2);
}