问题1:我有2个字段让用户输入开始日期和结束日期,但是以字符串格式输入 - DateStart(字符串:yyyy / mm / dd hh:mm) - DateEnd(字符串:yyyy / mm / dd hh:mm)
我可以比较两个日期时间吗?我想知道两个日期之间总共有多少小时差异。
问题2:用户也将以字符串格式输入1 returnDate(string:yyyy / mm / dd hh:mm),如果我需要在returnDate上添加55hours,我可以知道如何更新returnDate吗?
由于
答案 0 :(得分:1)
首先查看SimpleDateFormat
,这样您就可以将String
值转换为Date
对象。
例如......
try {
// Note hh is Hour in am/pm (1-12), based on you example, it's not possible
// now the day part (ie am or pm), you could supply aa as the am/pm marker
// or use HH which is Hour in day (0-23)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd hh:mm");
Date date = sdf.parse("2014/04/11 4:46");
System.out.println(date);
} catch (ParseException exp) {
exp.printStackTrace();
}
然后您可以使用JodaTime来计算两个日期之间的差异,有关示例,请参阅How to find difference between two Joda-Time DateTimes in minutes
应该注意的是,您可以跳过SimpleDateFormat
和JodaTime的使用,查看String to joda LocalDate in format of "dd-MMM-yy"以获取将String
转换为LocalDate
的示例使用JodaTime
要为现有Date
添加时间,您可以使用Calendar
或JodaTime,有关两者的示例,请参阅how to add days to java simple date format
我建议如果您使用某种GUI,您可以考虑使用其中一个可用的日期选择器,因为它可以为您节省大量的空白
答案 1 :(得分:0)
我建议使用Java8的java.util.time
包
示例:
public static void main(String[] args) {
// example input
String dateString1 = "2014/04/10 00:00";
String dateString2 = "2014/04/11 23:59";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");
LocalDateTime date1 = LocalDateTime.parse(dateString1, dtf);
LocalDateTime date2 = LocalDateTime.parse(dateString2, dtf);
// do your stuff with the dates...
}
答案 2 :(得分:0)
这是我的解决方案:
String date1 = "2014/04/10 15:30";
String date2 = "2014/04/11 09:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
try {
Date parsedDate1 = sdf.parse(date1);
Date parsedDate2 = sdf.parse(date2);
double secs = (parsedDate2.getTime() - parsedDate1.getTime()) / 1000;
double hours = secs / 3600;
System.out.println(hours);
} catch (ParseException e) {
e.printStackTrace();
}
为了将日期添加到日期:
Date date = new Date(someDateObject.getTime() + 55 * 3600 * 1000);