定义Java常量日期的最佳方法

定义Java常量日期的最佳方法,java,date,calendar,constants,Java,Date,Calendar,Constants,我想定义一些常量,特别是在我的域可以存在之前的日期和日历。我有一些代码,但它的丑陋。我正在寻找改进建议。 静态日历工作; 静止的{ working=gregorianalendar.getInstance(); 工作组(1776,6,4,0,0,1); } 第一个日历之前的公共静态最终日历=工作; public static final Date beforefirestdate=working.getTime(); 我把时间定在1776年7月4日。 我宁愿不要“working”变量 谢谢我

我想定义一些常量,特别是在我的域可以存在之前的日期和日历。我有一些代码,但它的丑陋。我正在寻找改进建议。

静态日历工作;
静止的{
working=gregorianalendar.getInstance();
工作组(1776,6,4,0,0,1);
}
第一个日历之前的公共静态最终日历=工作;
public static final Date beforefirestdate=working.getTime();

我把时间定在1776年7月4日。 我宁愿不要“working”变量


谢谢

我不确定我是否理解……但这不管用吗

public static final Calendar beforeFirstCalendar;
static {
    beforeFirstCalendar = GregorianCalendar.getInstance();
    beforeFirstCalendar.set(1776, 6, 4, 0, 0, 1);
}
public static final Date beforeFirstDate = beforeFirstCalendar.getTime();

我会将它提取到一个方法(在一个util类中,假设其他类也需要它):

然后简单地说

public static final Date beforeFirstDate = DateUtils.date(1776, 6, 4);

使用XML字符串表示法可能更清晰。这更易于理解,并且避免了您想要消除的局部变量:

import javax.xml.bind.DatatypeConverter;

Date theDate = DatatypeConverter.parseDateTime("1776-06-04T00:00:00-05:00").getTime()

请注意,将其设置为final并不能使其不变。您可能需要查看JodaTime,它的
DateTime
是不可变的,可以按照预期安全地声明为
final
。您甚至可以将
static{}
的第一行放回声明中,以保存一行代码:
public static final Calendar beforeFirstCalendar=Calendar.getInstance()
它不是一个不变的类,您仍然可以在任何地方编辑它(并且
final
在这方面没有任何变化)。
public static final Date beforeFirstDate = DateUtils.date(1776, 6, 4);
import javax.xml.bind.DatatypeConverter;

Date theDate = DatatypeConverter.parseDateTime("1776-06-04T00:00:00-05:00").getTime()