Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将日期传递给Java对象';s构造函数_Java_Date - Fatal编程技术网

将日期传递给Java对象';s构造函数

将日期传递给Java对象';s构造函数,java,date,Java,Date,在我的Java类中,我导入了包Java.util.Date,并创建了一个变量private Date birthdate 我的类构造函数接受名字、姓氏和生日。我已尝试将日期作为字符串传递,但无效: Person per = new Person("Angelina","Jolie","1975/06/04"); 如何将日期对象正确地传递给我的构造函数?要创建日期,请使用以下命令- LocalDate=LocalDate.of(1975,06,04); 并将其传递给参数化构造函数。 或者你可以

在我的Java类中,我导入了包
Java.util.Date
,并创建了一个变量
private Date birthdate

我的类构造函数接受名字、姓氏和生日。我已尝试将日期作为字符串传递,但无效:

Person per = new Person("Angelina","Jolie","1975/06/04");

如何将
日期
对象正确地传递给我的构造函数?

要创建日期,请使用以下命令-
LocalDate=LocalDate.of(1975,06,04);
并将其传递给参数化构造函数。 或者你可以使用

public static Date parseDate(String date) {
 try {
     return new SimpleDateFormat("yyyy-MM-dd").parse(date);
 } catch (ParseException e) {
     return null;
 }
}
这将返回您的日期,您可以将其传递给构造函数

这方面还有一个办法:

 Date date = new GregorianCalendar(1975, Calendar.APRIL, 06).getTime();
考虑到Java8API,最好的方法是使用LocalDate。

Java.time 这不是你老师要求的答案。考虑到需要将一个老式的
java.util Date
对象传递给构造函数,我会:

    LocalDate birthDate = LocalDate.of(1975, Month.JUNE, 4);
    Instant startOfDay = birthDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
    Person per = new Person("Angelina", "Jolie", Date.from(startOfDay ));
挑战的一部分在于,尽管名称a
Date
并不代表日期。它表示时间上的一个时刻(毫秒精度)。在那一刻,地球上不同时区的日期不同。解决这一困境的传统方法是在你自己的时区内,一天中的第一刻(通常是00:00)。因此,您代表1975年6月4日的日期与我代表同一日期的日期不同。哦,恐怖

我正在尽可能地使用java.time,这是现代java日期和时间API。当然,最后我确实需要转换成日期。我的第一行代码定义1975年6月4日的日期比任何旧的日期时间类都要清晰。第二行在用户的时区(更准确地说,在运行程序的JVM的默认时区)中查找一天的开始。最后
Date.from(startOfDay)
转换为
Date

奖励积分:

  • 我觉得代码读起来很清楚
  • 我已经迈出了第一步,为老师意识到有更好的方法或者我们找到更好的老师的那一天做准备
编辑:如果还要求将日期指定为
1975-06-04
,只需按以下方式定义即可:

    LocalDate birthDate = LocalDate.parse("1975-06-04");
1975-06-04
是国际标准ISO 8601格式。这是
LocalDate.parse()所期望的

链接

  • 解释如何使用java.time

我建议立即使用Java 8日期,例如LocalDate。那些旧的库只是为了向后兼容。如果你是从头开始学习日期,不妨从正确的日期开始。我只是一个初学者(我的大学有一个项目,老师告诉我们使用java.util.Date)。我不知道刮痕是什么!谢谢您的回答,但我必须使用java.util.Date…这是否回答了您的问题?告诉学生使用设计拙劣、过时已久的
java.util.Date
类的老师应该被解雇。很抱歉给你带来这个坏消息。老师们,被解雇了!:D我离开多年后才回到哈维,上周花了几天时间将我的全新项目从旧的日期库和Long。。。迄今为止,在Jave 8中完成的所有工作。是啊,为什么要用一个旧的废弃的东西,它已经为你更新了。到目前为止,我喜欢这个新图书馆不要使用octal。我喜欢它会向老师展示一种新的方法来做这件事,它明确地取代了被认为是过时的旧库。希望他们能注意到。可以在代码中添加一条注释,说明。。。使用现代库还原为旧代码。。。帮助礼貌地强调这一点。