java - 一年中两个日期之间的间隔时间

标签 java date datetime jodatime gregorian-calendar

我必须实现一个返回(逐月)过去 12 个月的开始日期和最终日期的函数。例如:

今年五月我想展示结果:

01/05/2016 00: 00: 00: 000T / 30/04/2017 23: 59: 59: 999T.

我创建了以下函数,想问这是否正确或者是否有其他更简单的解决方案?

public Interval getPeriod() {
    MutableDateTime fromDateTime = new MutableDateTime(new DateTime().withTimeAtStartOfDay());
     fromDateTime.addMonths(-12); // Start Month        
     fromDateTime.setDayOfMonth(1); // First day start month

    MutableDateTime toDateTime = new MutableDateTime(new DateTime().withTimeAtStartOfDay());
    toDateTime.addMonths(-1); // last month
    toDateTime.setDayOfMonth(1); // firt day last month

    DateTime firstDayStart = fromDateTime.toDateTime();

    DateTime firstDayLastMonth = toDateTime.toDateTime();
    DateTime lastDayLastMonth = firstDayLastMonth.dayOfMonth().withMaximumValue();
    DateTime lastInstantLastMonth = lastDayLastMonth.withTime(23, 59, 59, 999);
    log.debug("start: {} end: {}",firstDayStart, lastInstantLastMonth);
    return new Interval(firstDayStart, lastInstantLastMonth);
}

最佳答案

一个更简单的解决方案是不创建大量 MutableDateTime 实例并仅使用 DateTime 的方法:

public Interval getPeriod() {
    DateTime d = new DateTime(); // current date
    DateTime start = d.withDayOfMonth(1).minusMonths(12) // day 1 of 12 months ago
                      .withTimeAtStartOfDay(); // start date
    DateTime end = d.minusMonths(1) // previous month
                    .dayOfMonth().withMaximumValue() // last day of month
                    .withTime(23, 59, 59, 999); // end date

    return new Interval(start, end);
}

关于java - 一年中两个日期之间的间隔时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44135435/

相关文章:

java - 为什么sdkmanager不会更新?

java - 在 Linux 中使用 Java 运行 CPU 利用率命令

javascript - 将日期从字符串转换为日期 Javascript

excel - 选择具有包含日期​​的动态名称的工作表

python - 如何使用 python 过滤 CSV 文件中两个日期之间的行并重定向到另一个文件?

java - 在 Android 中使用 RenderScript 应用模糊会产生奇怪的输出

java - vector : How do I check each element to see if it equals a user input?

sql - 在 SQL Server 中删除日期时间的时间部分的最佳方法

Python pandas date_range 采样分别分配给每一天

sql - 如何使用日历规则在 SQL 中获取一年中的一周?