我们应该在Java中使用Date对象吗?

3

我们应该在Java中使用java.util.Date对象吗?它有很多已弃用的方法,使用一个复杂的方法来完成本应简单的任务让人感到有点烦恼。

我正在使用一些愚蠢的方法来模拟getDate(),例如:

    public static int toDayMonth (Date dt)
{
    DateFormat df = new SimpleDateFormat("dd");
    String day = df.format(dt);
    return Integer.parseInt(day);
}

一定有更好的方法...

4个回答

5

可能是个人偏好,但我使用Joda Time

从Joda Time的DateTime API来看, DateTime#dayOfMonth可能是你要找的。

DateTime dt = new DateTime();
// no args in constructor returns current date and time
DateTime.Property day = dt.dayOfMonth();
System.out.println(day.get()); // prints '27'

我认为这是一个好主意,因为据我所知,Joda Time 正在考虑纳入 Java 7。不过我可能错了。 - Phil
@Phil:我在某个地方读到过,他们不打算将Joda Time移植到Java 7中,而是尝试从中学习。 - Anthony Forloney

3

不,你真的不应该再使用java.util.Date了。

GregorianCalendar是一种可供使用的替代方案:

GregorianCalendar cal = new GregorianCalendar();
cal.set(Calendar.MONTH, Calendar.JUNE);
cal.set(Calendar.DAY_OF_MONTH, 27);
cal.set(Calendar.YEAR, 2010);

我宁愿使用Calendar#getInstance()。该工厂将返回一个与语言环境相关的日历。 - BalusC

3

2
每个方法的javadoc都说明了它被什么替代。要模拟getDate(),请使用:
Calendar.get(Calendar.DAY_OF_MONTH)

编辑:完整示例:

public static int toDayMonth (Date dt) {
    Calendar c = new GregorianCalendar();
    c.setTime(dt);
    return c.get(Calendar.DAY_OF_MONTH);
}

是的,我看到过那行代码 "Calendar.get(Calendar.DAY_OF_MONTH)"。 但是该如何使用?在哪里放置日期对象? - Jose Conde
1
你需要设置日历对象的日期。calendar.setDate(date) - KevMo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接