Java中的LocalDate数据类型

时间:2015-01-17 22:53:24

标签: java date types simpledateformat

我正在进行一项任务,我们使用自己的属性和方法(Constructor,Getter和Setter)创建自己的类,对于一个类,我需要一些使用日期的属性,例如: dateOfIssue或dateOfPayment。我正在尝试使用新的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;
}
}

2 个答案:

答案 0 :(得分:1)

Java 8取代java.util.Date,而是提供了一个大大改进的新Date and Time API。如果禁止使用Java 8,但允许使用第三方库,则JodaTime是一个很好的选择。该库是新Java 8 Date和Time API的基础,可以与早期版本的Java一起使用。


如果使用Java 8 java.time package,属性应为LocalDate类型(或LocalDateTime是需要的时间部分)。 Setter和getter应该分别接受和返回相同类型的对象。

以下是一些如何创建日期实例的示例:

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

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

有关Java 8日期/时间API的精彩教程herehere

答案 1 :(得分:0)

你有点误解了SimpleDateFormat的含义。

此字段的类型Date不应为SimpleDateFormat类型。

private SimpleDateFormat dateOfIssue;

其setter参数也是如此。一个SimpleDateFormat对象
不是日期,它是允许您解析/格式化的东西 Date来自/ String s。这就是问题的根本原因。