【发布时间】:2016-12-17 21:25:21
【问题描述】:
我有 java.sql.date 和 java.sql.time 对象,我需要找到日期之间的持续时间。
所以我正在使用上面的日期和时间对象创建 java.sql.timestamp 对象
Timestamp timestamp1 = new Timestamp(StartDate.getYear(),
StartDate.getMonth(), StartDate.getDay(),
StartTime.getHours(), StartTime.getMinutes(), 00,
00);
这是我的代码
String date = "2010-01-05";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date3 = null;
try {
date3 = sdf1.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
Date StartDate = new Date(date3.getTime());
System.out.println("Date " + StartDate);
String date2 = "2010-01-06";
java.util.Date date4 = null;
try {
date4 = sdf1.parse(date2);
} catch (ParseException exception) {
exception.printStackTrace();
}
Date EndDate = new Date(date4.getTime());
System.out.println("Date " + EndDate);
String time = "01:00";
DateFormat formatter = new SimpleDateFormat("HH:mm");
java.sql.Time StartTime = null;
try {
StartTime = new java.sql.Time(formatter.parse(time).getTime());
} catch (ParseException exception2) {
exception2.printStackTrace();
}
System.out.println("TIMEEEEEEEEEE====" + StartTime);
String time2 = "02:00";
java.sql.Time EndTime = null;
try {
EndTime = new java.sql.Time(formatter.parse(time2).getTime());
} catch (ParseException exception3) {
exception3.printStackTrace();
}
System.out.println("TIMEEEEEEEEEE====" + EndTime);
Timestamp timestamp1 = new Timestamp(StartDate.getYear(),
StartDate.getMonth(), StartDate.getDay(),
StartTime.getHours(), StartTime.getMinutes(), 00,
00);
Timestamp timestamp2 = new Timestamp(EndDate.getYear(),
EndDate.getMonth(), EndDate.getDay(),
EndTime.getHours(), EndTime.getMinutes(), 00, 00);
long milliseconds = timestamp2.getTime() - timestamp1.getTime();
int seconds = (int) milliseconds / 1000;
// calculate hours minutes and seconds
int hours = seconds / 3600;
int minutes = (seconds % 3600) / 60;
seconds = (seconds % 3600) % 60;
System.out.println(hours+"h:"+minutes+"m:"+"00s");
测试用例
当我将日期指定为 2010-01-05 并将日期 2 指定为 2010-01-06 时,我得到如下输出
Date 2010-01-05
Date 2010-01-06
TIMEEEEEEEEEE====01:00:00
TIMEEEEEEEEEE====02:00:00
25h:0m:00s
当我将日期设为 2010-01-05 并将日期 2 设为 2010-01-11 时,我得到的输出为负值,如下所示
Date 2010-01-05
Date 2010-01-11
TIMEEEEEEEEEE====01:00:00
TIMEEEEEEEEEE====02:00:00
-23h:0m:00s
如果我做错了什么,请帮助我纠正。 提前致谢。
【问题讨论】:
-
你调试过你的代码吗?日期/时间戳是否正确或已损坏?顺便说一句,您应该使用
Calendar来构建日期而不是不推荐使用的构造函数。另请注意,时区和夏令时以及其他影响(例如闰秒)可能会影响您的手动计算,即两个日期之间的秒数可能不是您所期望的。因此,我建议使用其中一个可用的库(例如 Joda Time,或者如果您使用的是 Java 8,则使用新的内置日期库)。 -
您正在将日期转换为时间格式,这样您就可以做到这一点。