Java中的LocalDate数据类型

Java中的LocalDate数据类型,java,date,types,simpledateformat,Java,Date,Types,Simpledateformat,我正在处理一个任务,在这个任务中,我们使用自己的属性和方法(构造函数、Getter和Setter)创建自己的类,对于一个类,我需要一些使用date的属性,例如发行日期或付款日期。我试图使用新的LocalDate数据类型,但是当我从CheckingAccount实例化了一个对象并试图设置一个日期时,我不知道该使用什么格式。我试过3个整数,例如05,06,2010,在不同的顺序,但它说预期 有人能帮忙吗 import java.time.*; import java.math.BigDecimal;

我正在处理一个任务,在这个任务中,我们使用自己的属性和方法(构造函数、Getter和Setter)创建自己的类,对于一个类,我需要一些使用date的属性,例如发行日期或付款日期。我试图使用新的LocalDate数据类型,但是当我从CheckingAccount实例化了一个对象并试图设置一个日期时,我不知道该使用什么格式。我试过3个整数,例如05,06,2010,在不同的顺序,但它说预期

有人能帮忙吗

import java.time.*;
import java.math.BigDecimal;

final public class CheckingAccount extends BankAccount {
    //Attributes
    private int checkingBookNo;
    private BigDecimal amountLastCheck;
    private LocalDate dateOfIssue;


public CheckingAccount(){
    checkingBookNo = 0;
    dateOfIssue = null;

}

public void setDateOfIssue ( LocalDate dateOfIssueIn )
{
   dateOfIssue = dateOfIssueIn;
}
}

您有点误解了
SimpleDateFormat
的含义

此字段应为
Date
类型,而不是
SimpleDateFormat
类型

private SimpleDateFormat发行日期


它的setter参数也是如此。一个
SimpleDateFormat
对象
不是日期,而是允许您解析/格式化的内容

Date
s from/to
String
s。这就是你问题的根本原因

Java8取代了
Java.util.Date
,而是提供了一种改进得多的新方法。如果禁止使用Java8,但允许使用第三方库,则是一个很好的选择。这个库是新的Java8日期和时间API的基础,可以与早期版本的Java一起使用


在使用Java8的情况下,属性应该是类型(或者是需要的时间部分)。Setter和getter应该分别接受和返回相同类型的对象

下面是几个如何创建日期实例的示例:

// the current date
LocalDate currentDate = LocalDate.now();

// 2015-02-11
LocalDate tenthFeb2014 = LocalDate.of(2015, Month.FEBRUARY, 11);

提供了一个关于Java 8日期/时间API的不错的教程。

SimpleDataFormat
用于将
字符串
解析为
日期
或将
日期
格式化为
字符串
。要存储日期,必须使用
date
类型,因为
SimpleDateFormat
不会存储任何特定的日期值。Java的日期数据类型很难保存。改用jodatime。总是。加上1,指出旧的Java日期很糟糕,并显示了更好的选项。感谢您的建议。:)我现在已经对代码进行了编辑,但是我仍然不知道如何使用这个LocalDate类型及其格式?例如,当使用字符串执行此操作时,我可以使用setter方法并键入类似“John”的字符串,John将为该对象存储,我可以使用getter方法返回字符串。这就是我想要的约会。有什么想法吗?Java 8当然不反对Java.util.Date。事实上,java.util.Date的某些部分已被弃用,但这发生在Java8之前的几年。也许你的意思是新的包取代了java.util.Date/.Calendar类,使它们过时了——这当然是真的。@BasilBourque旧的日期API并没有被弃用,因为所有的类和方法都被标记为去擦洗。然而,我确实认为该术语适用于给定的上下文()。我同意你的观点。但你的术语完全错了。检查您提供的链接中给出的定义。旧的类并没有被甲骨文、JCP和微软所反对。java.time的实现是为了与java.sql.Timestamp等相关类兼容而构建的。文档和源代码都未标记为已弃用。没有警告说这些类将来会被删除。弃用具有特定的技术含义,该术语在本例中不适用。