我想知道如何在新对象中使用类型日期?
我将解释更多显示我的代码的内容:
我有一个Java类,名为:
Reiziger:
import java.util.Date;
public class Reiziger {
private String naam;
private Date gbdatum;
public Reiziger(String nm, Date gbdtm) {
this.naam = nm;
this. gbdatum = gbdtm;
}
public String getNaam() {
return naam;
}
public void setNaam(String naam) {
this.naam = naam;
}
public Date getGBdatum() {
return gbdatum;
}
public void setGBdatum(Date gbdatum) {
this.gbdatum = gbdatum;
}
public String toString() {
return naam + gbdatum;
}
}还有一个主要的:
public class Main {
public static void main(String[] args) {
Reiziger r1 = new Reiziger("Joost", "01-01-1994");
Reiziger r2 = new Reiziger("Hans", null);
ReizigerOracleDaoImpl i1 = new ReizigerOracleDaoImpl();
i1.alleReizigers.add(r1);
i1.alleReizigers.add(r2);
System.out.println(i1.alleReizigers);
}
}正如您在我的主题栏中所看到的,我尝试了很多只有null才能工作的东西。我想添加一个日期->的对象,例如: 01-01-1994,但是不能工作。
我试过没有“”也什么也没有。
知道我做错什么了吗?
发布于 2018-04-24 04:39:47
tl;dr
将String对象传递给构造函数,但随后尝试将其分配给不同类型的成员变量(Date)。没办法。方钉圆孔。您必须首先将文本解析为正确类型的对象。
另一个问题是:您正在使用糟糕的旧日期时间类Date,您应该在那里使用现代的java.time.LocalDate类。
LocalDate.of( 1994 , Month.JANUARY , 1 )java.time
我想知道如何在新对象中使用类型日期?
,不要,
显然,你想要的只是日期的值,所以使用日期类,而不是日期加时间的课程。
此外,从不使用这是几年前被java.time类取代的麻烦的旧日期时间类的一部分。
LocalDate类表示一个日期纯值,没有一天的时间,也没有时区.按1月至12月的数字1-12或按Month枚举类指定月份部分。
LocalDate ld = LocalDate.of( 1994 , Month.JANUARY , 1 ) ;更改成员变量:
private Date gbdatum ;…至:
private LocalDate gbdatum ;将构造函数更改为:
public Reiziger(String nm, LocalDate gbdtm)就这样说吧:
Reiziger r1 = new Reiziger(
"Joost" ,
LocalDate.of( 1994 , Month.JANUARY , 1 )
) ;关于java.time
http://docs.oracle.com/javase/10/docs/api/java/time/package-summary.html框架内置到Java8和更高版本中。这些类取代了麻烦的旧遗赠日期时间类,如java.util.Date、Calendar和SimpleDateFormat。
http://www.joda.org/joda-time/项目现在在维护模式中,建议迁移到java.time类。
要了解更多信息,请参见http://docs.oracle.com/javase/tutorial/datetime/TOC.html。并搜索堆栈溢出以获得许多示例和解释。规范是JSR 310。
您可以直接与数据库交换java.time对象。使用与JDBC 4.2或更高版本兼容的JDBC 4.2。不需要字符串,也不需要java.sql.*类。
在哪里获得java.time类?
三次-额外项目使用其他类扩展java.time。这个项目是将来可能加入java.time的试验场。您可以在这里找到一些有用的类,如Interval、YearWeek、YearQuarter和更多。
发布于 2018-04-23 19:43:26
您的方法被定义为接受一个Date对象,但是您正在尝试传递一个字符串。Java不会自动将字符串转换为日期。
您需要做的是使用DateFormatter.
这将使用定义的日期模式将传入的字符串转换为要使用的日期对象。
在您的例子中,您可能希望执行类似的操作:
String dateFormat = "MM-dd-yyyy";
try {
DateFormat df = new SimpleDateFormat(dateFormat);
Date dateToUse = df.parse("01-01-1994");
// Or this way
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat);
LocalDate localDate = LocalDate.parse("01-01-1994", formatter);
} catch (ParseException pe) {
// Do something
}下面是指向Java的链接:
SimpleDateFormatter:https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
DateTimeFormatter:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
LocalDate:https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html
发布于 2018-04-23 19:38:10
https://docs.oracle.com/javase/7/docs/api/java/util/Date.html
Date(String)被否决了。在使用Date(Long)之后使用SimpleDateFormatter new SimpleDateFormatter ("dd-MM-yyyy") ;
https://stackoverflow.com/questions/49988644
复制相似问题