将字符串转换为日期时间并比较2日期差异

时间:2014-04-11 06:40:29

标签: eclipse

问题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吗?

由于

3 个答案:

答案 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);