我正在为学校作业设置Date类,该类基本上具有一些基本功能,例如API Date。除设置为当前本地时间的构造函数之一外,其他方法均不允许与Java的API Date类关联。我在为它创建的实例上设置错误时遇到麻烦。
import java.util.*;
public class Date
{
// declare needed variables
private int day;
private int month;
private int year;
/**
* Default constructor to set the date info to the current date
*/
public Date()
{
// I have trouble assign Date using the Java API Date class
Date d1 = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(d1);
day= cal.get(Calendar.DAY_OF_MONTH);
month = cal.get(Calendar.MONTH);
year = cal.get(Calendar.YEAR);
}
/**
* Overloaded constructor to set the date info based on user input
* @param int inMonth to input month value
* @param int inDay to input day value
* @param int inYear to input year value
*
*/
public Date( int inMonth, int inDay, int inYear)
{
//set all the inputs into suitable variables
day = inDay;
month = inMonth;
year = inYear;
}
}
错误:类型不兼容:日期无法转换为java.util.Date
答案 0 :(得分:1)
将您的类和构造函数重命名为“ MyDate”或日期以外的其他名称。
答案 1 :(得分:0)
/**
* Default constructor to set the date info to the current date
*/
public Date()
{
// The solution is to use LocalDate
LocalDate d1 = LocalDate.now(ZoneId.systemDefault());
// I am leaving the rest to yourself, it shouldn’t be hard
}
您尝试使用的java.util.Date
类(我认为)设计欠佳且已过时。来自Java.time(现代的Java日期和时间API)的LocalDate
非常好用。 LocalDate
拥有将月份的年,月和日获取为整数的方法。
然后您无需重命名自己的班级。
否,您可以使用与要声明的类同名的类。只有您不能导入该其他类。相反,您可以使用限定名称来引用它,即以包名称为前缀的类名称:
java.util.Date d1 = new java.util.Date();
在这种情况下,您不想这么做,但是很高兴知道。您可能需要在其他时间再上其他课程。
LocalDate