繁体   English   中英

用Java计算两个日期之间的天数

[英]Calculating days between two dates in Java

我是Java的新手,正在尝试一些练习以更好地理解它。

我将练习设置为通过控制台输入不同的字符串,整数等,并将输入内容写入文本文件。 所有这些都很好。

现在,我想在项目开始以及何时结束时输入文本文件。 那没有问题。

现在这是我的问题。 我想计算项目从开始到结束的持续时间(以天为单位)。

当前,它仅计算日期,而忽略月份和年份。

For example: (dd.mm.yyyy)
Start: 07.07.2014   End: 15.07.2014  Output: 8 (almost correct :) )
Another example:
Start 07.07.2014   End: 03.08.2014  Output: -3 (not even close)

我只是不知道我的问题在哪里。

谢谢你的帮助! 克里斯

System.out.print("Start project (dd.mm.yyyy): ");
String beginn = input.nextLine();
DateFormat df = new SimpleDateFormat("dd.mm.yyyy");
Date d = null;
try {
    d = df.parse(beginn);
} catch (ParseException e) {
    System.out.println("Unable to parse " + beginn);
}
DateFormat df3 = DateFormat.getDateInstance(DateFormat.LONG);
String s3 = df3.format(d);

System.out.print("End of project (dd.mm.yyyy): ");
String ende = input.nextLine();
DateFormat df4 = new SimpleDateFormat("dd.mm.yyyy");
Date g = null;
try {
    d = df.parse(ende);
} catch (ParseException f) {
    System.out.println("Unable to parse " + ende);
}
//DateFormat df5 = DateFormat.getDateInstance(DateFormat.LONG);
//String s4 = df5.format(d);


// String dauer = input.nextLine(); 
diffDays = 0;
try {
    DateFormat dfa = new SimpleDateFormat("dd.mm.yyyy");
    Date from = dfa.parse(beginn);
    Date to = dfa.parse(ende);
    long diffMillis = to.getTime() - from.getTime();
    //diffDays = Math.round( (double)diffMillis / (24. * 60.*60.*1000.) );
    diffDays = diffMillis / (1000 * 60 * 60 * 24);
    System.out.println(diffDays);
} catch (ParseException ex) {
    ex.printStackTrace();
}

您的格式错误。

DateFormat df = new SimpleDateFormat("dd.MM.yyyy");

根据文档 ,MM指定月份,其中mm指定分钟。

Java 8中的示例:
获取从现在到java.sql.Date之间的天数:

LocalDate startDate = LocalDate.now();
Instant instant = dueDate.toInstant();
LocalDate endDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
long dueDays = ChronoUnit.DAYS.between(startDate, endDate);
System.out.println("XXX is due in " + dueDays);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM