新日期(年、月、日)已弃用
new Date(year,month,day) is deprecated
我有一个 class A_Class
它的构造函数参数之一是 Date
类型,当我尝试在我的 main 中初始化 class 的对象时例如:
A_Class aClass = new A_Class( param1, param2, new Date(1995,01,04) );
IDE 告诉我 Date
这种格式已被弃用。
难道没有另一种方法可以直接将新日期传递给构造函数,还是我总是必须这样做:
final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd",Locale.US);
String dateInString1 = "1995-Jan-4";
Date dateInDate1 = formatter.parse(dateInString1);
A_Class aClass = new A_Class( param1, param2, dateInDate1 );
错误class
您使用的是糟糕的日期时间 class,现在已成为遗留问题。几年前被现代 java.time classes 所取代。
LocalDate
对于没有时间和时区的仅日期值,使用 LocalDate
。
LocalDate localDate = LocalDate.of( 1995 , 1 , 5 ) ;
以标准 ISO 8601 格式 YYYY-MM-DD 生成文本。
String output = localDate.toString() ;
设计您的 class 以容纳 LocalDate
而不是 Date
。
public class Employee
{
private String givenName, surName ;
LocalDate whenHired ;
// Constructor
public Employee( String givenName , String surName , LocalDate whenHired )
{
…
}
}
用法示例。
Employee alice = new Employee( "Alice" , "Anderson" , LocalDate.of( 1995 , Month.JANUARY , 4 ) ) ;
八进制文字
new Date(1995,01,04)
除非您指的是八进制(以 8 为底)而不是十进制(以 10 为底),否则不要以零开头的文字整数。
我有一个 class A_Class
它的构造函数参数之一是 Date
类型,当我尝试在我的 main 中初始化 class 的对象时例如:
A_Class aClass = new A_Class( param1, param2, new Date(1995,01,04) );
IDE 告诉我 Date
这种格式已被弃用。
难道没有另一种方法可以直接将新日期传递给构造函数,还是我总是必须这样做:
final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd",Locale.US);
String dateInString1 = "1995-Jan-4";
Date dateInDate1 = formatter.parse(dateInString1);
A_Class aClass = new A_Class( param1, param2, dateInDate1 );
错误class
您使用的是糟糕的日期时间 class,现在已成为遗留问题。几年前被现代 java.time classes 所取代。
LocalDate
对于没有时间和时区的仅日期值,使用 LocalDate
。
LocalDate localDate = LocalDate.of( 1995 , 1 , 5 ) ;
以标准 ISO 8601 格式 YYYY-MM-DD 生成文本。
String output = localDate.toString() ;
设计您的 class 以容纳 LocalDate
而不是 Date
。
public class Employee
{
private String givenName, surName ;
LocalDate whenHired ;
// Constructor
public Employee( String givenName , String surName , LocalDate whenHired )
{
…
}
}
用法示例。
Employee alice = new Employee( "Alice" , "Anderson" , LocalDate.of( 1995 , Month.JANUARY , 4 ) ) ;
八进制文字
new Date(1995,01,04)
除非您指的是八进制(以 8 为底)而不是十进制(以 10 为底),否则不要以零开头的文字整数。