java - 在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
我无法思考如何拆分数据以及如何从表中获取数据。非常感谢任何帮助。
解决方案
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 安装)。我已经运行了辅助方法,它产生了我引用的输出。
你不应该得到这个答案,因为你的问题太宽泛、不清楚而且研究不足。为了给你至少一点答案,我又跑了一公里。下次请多走一公里问一个好问题,以便写出好的答案而无需猜测和过多的压力。这对所有人来说都是一种乐趣,尤其是你自己。
推荐阅读
- ruby-on-rails - 为什么我得到 nil:NilClass 的未定义方法“错误”?
- mips - 小端/大端在内存中排列的十六进制值?
- c# - 为什么在unity3d中得到“无法添加脚本行为AssemblyInfo.cs”
- mule - 流变量不适用于 Mule 中 SFTP 出站端点中的密码短语属性
- python - 在具有虚拟键盘的网站上使用 selenium 输入密码
- typescript - 从类型中选择,数组限制为类型的键
- python - “utf-8”编解码器无法解码位置 2 中的字节 0xe9:无效的继续字节
- maven - 如何配置 maven checkstyle 插件以打印抑制输出
- android - 读取 .txt 并将信息放入 hashMap
- python - 更快地创建多个数据帧。for循环太慢了