在Java中创建日期的正确方法是什么?

2022-08-31 11:15:40

我对 Date 类的 Java API 感到困惑。所有内容似乎都已弃用,并链接到 Calendar 类。因此,我开始使用 Calendar 对象来执行我想要对 Date 执行的操作,但直观地说,当我真正想做的就是创建和比较两个日期时,使用 Calendar 对象会让我感到困扰。

有没有一个简单的方法来做到这一点?现在我做

Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(0);
cal.set(year, month, day, hour, minute, second);
Date date = cal.getTime(); // get back a Date object

答案 1

您可以使用 SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date d = sdf.parse("21/12/2012");

但我不知道是否应该认为它比使用日历更正确...


答案 2

优秀的joda时间库几乎总是比Java的日期或日历类更好的选择。以下是一些示例:

DateTime aDate = new DateTime(year, month, day, hour, minute, second);
DateTime anotherDate = new DateTime(anotherYear, anotherMonth, anotherDay, ...);
if (aDate.isAfter(anotherDate)) {...}
DateTime yearFromADate = aDate.plusYears(1);