我想要获得两个值之间的日子。其格式为MMdd。
实施例
第一次约会= 0501
第二个日期= 0519
尝试查找两个日期之间的天数值。在这个例子中将是18.请帮我这个。我试着四处寻找并找不到解决方案。谢谢!
我的代码
这是我到目前为止:
收到错误:类Project3中的方法天数无法应用于给定类型。
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Project3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String name = input.next() + input.nextLine();
String car = input.next() + input.nextLine();
String key = input.next();
String firstDate = input.next(), lastDate = input.next();
double S = 1.0, C = 1.2, U = 1.4, T = 1.6, B = 2.0;
final double N = 89.22, V = (N - 11.4);
double daily, total;
String daysBetween = Project3.days();
}
public static long days(Date firstDate, Date lastDate) {
Calendar start = Calendar.getInstance();
start.setTime(firstDate);
Calendar end = Calendar.getInstance();
long daysBetween = 0;
while (start.before(end)) {
start.add(Calendar.DAY_OF_MONTH, 1);
daysBetween++;
}
return daysBetween;
}
}
答案 0 :(得分:3)
DateTimeFormatter dtf = DateTimeFormat.forPattern("MMdd");
LocalDate day1 = dtf.parseLocalDate("0501");
LocalDate day2 = dtf.parseLocalDate("0519");
int daysBetween = Days.daysBetween(day1, day2).getDays();
答案 1 :(得分:2)
Joda时间是执行此操作的正确方法,但如果您真的 使用纯JDK进行操作,则可以自行计算。
Calendar
实例有一个.getTimeInMillis()
方法,告诉您自某个固定起点以来的毫秒数。您可以将两个日期放入Calendar
个实例中,然后计算两个getTimeInMillis()
值之间的差异。
然后除以1000得到秒; 60分钟得到分钟;到60点钟才能得到;到了24天才能得到日子。并且交叉你的手指,希望在夏令时方面做到最好。
你还有另外一个问题,那就是因为你只有一天一个月而不是一年,所以没有一个独特的答案。 2月28日至3月1日之间的天数差异在大多数年份是一天,而在闰年是两天。如果你想假设2月只有28天,那就选择你喜欢的任何非闰年(例如,2014年)。
答案 2 :(得分:1)
这是一种计算两个日期之间天数的方法。它一直在前进,而开始日期在结束日期之前。无论夏令时间如何,它都能正常工作。
public static long days(Date startDate, Date endDate) {
Calendar start = Calendar.getInstance();
start.setTime(startDate);
Calendar end = Calendar.getInstance();
long daysBetween = 0;
while(start.before(end)) {
start.add(Calendar.DAY_OF_MONTH, 1);
daysBetween++;
}
return daysBetween;
}