首页 > 解决方案 > 在java中区分日期变化并分割第二天和第二天的时间

问题描述

我必须找到一个人一天花费的时间。我需要给出问的日期和出入境的时间吗?我有一张这样的桌子。

#StartTime#               # EndTime#             # Day #  
2018-07-16 23:00:00    2018-07-17  01:30:00      2018-07-16
2018-07-17 03:00:00    2018-07-17  04:30:00      2018-07-17
2018-07-17 13:00:00    2018-07-17  14:30:00      2018-07-17
2018-07-17 20:00:00    2018-07-17  21:30:00      2018-07-17
2018-07-17 22:00:00    2018-07-18  01:30:00      2018-07-18

我需要计算他在一天中花费的确切时间。例如,在 2018 年 7 月 17 日。我需要他花费的日期和时间。结果应该是

2018-07-17 00:01:00  2018-07-17  01:30:00
2018-07-17 03:00:00  2018-07-17  04:30:00
2018-07-17 13:00:00  2018-07-17  14:30:00
2018-07-17 20:00:00  2018-07-17  21:30:00   
2018-07-17 22:00:00  2018-07-17  23:59:59

我无法思考如何拆分数据以及如何从表中获取数据。非常感谢任何帮助。

标签: javamysqldatetime

解决方案


    try (PreparedStatement stmt = yourDbConnection
                    .prepareStatement("select StartTime, EndTime, Day from your_table;");
            ResultSet rs = stmt.executeQuery()) {
        while (rs.next()) {
            findTimeSpentInDay(rs.getObject("StartTime", LocalDateTime.class),
                    rs.getObject("EndTime", LocalDateTime.class),
                    rs.getObject("Day", LocalDate.class));
        }
    }

上面的代码片段使用以下方法来查找时间:

private static void findTimeSpentInDay(
        LocalDateTime startTime, LocalDateTime endTime, LocalDate day) {
    LocalDateTime startOfDay = day.atStartOfDay();
    LocalDateTime endOfDay = day.plusDays(1).atStartOfDay();
    if (startTime.isBefore(startOfDay)) {
        startTime = startOfDay;
    }
    if (endTime.isAfter(endOfDay)) {
        endTime = endOfDay;
    }
    System.out.println("" + startTime + "  " + endTime);
}

输出与您所说的不完全一样,主要是因为我不了解您的确切要求:

2018-07-16T23:00  2018-07-17T00:00
2018-07-17T03:00  2018-07-17T04:30
2018-07-17T13:00  2018-07-17T14:30
2018-07-17T20:00  2018-07-17T21:30
2018-07-18T00:00  2018-07-18T01:30

我认为它接近了,我将留给您将代码调整为所需的。

免责声明:从 MySQL 获取的代码已经编译,但我没有运行它(手头没有 MySQL 安装)。我已经运行了辅助方法,它产生了我引用的输出。

你不应该得到这个答案,因为你的问题太宽泛、不清楚而且研究不足。为了给你至少一点答案,我又跑了一公里。下次请多走一公里问一个好问题,以便写出好的答案而无需猜测和过多的压力。这对所有人来说都是一种乐趣,尤其是你自己。


推荐阅读