4

我想做类似的事情

private DateTime[] importantDates = {
        new DateTime(2013, 6, 15, 0, 0),
        new DateTime(2013, 9, 15, 0, 0)
};

其中年份始终是当前年份。Joda 是否允许这样的事情,无需计算?

示例:现在我们生活在 2013 年。我不想硬编码这个值。

就此而言,我真正想要的是什么

private DateTime[] importantDates = {
        new DateTime(current_year, 6, 15),
        new DateTime(current_year, 9, 15),
};

这可以做到吗?

4

2 回答 2

5

那么最简单的方法是:

int year = new DateTime().getYear();
DateTime[] dates = new DateTime[] {
    new DateTime(year, 6, 15, 0, 0),
    new DateTime(year, 9, 15, 0, 0),
};

这对于实例变量并不理想,因为它year无缘无故地引入了一个额外的实例变量 ( ),但您可以轻松地将其放入辅助方法中:

private final DateTime[] importantDates = createImportantDatesThisYear();

private static DateTime[] createImportantDatesThisYear() {
    int year = new DateTime().getYear();
    return new DateTime[] {
        new DateTime(year, 6, 15, 0, 0),
        new DateTime(year, 9, 15, 0, 0),
    };
}

请注意,所有这些代码都假定您想要

于 2013-06-26T20:50:00.860 回答
4

DateTime.now().getYear()将返回当前年份(javadoc)。例如,您可能希望使用其中一个重载版本来调整时区。

于 2013-06-26T20:46:12.023 回答