定义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()