gpt4 book ai didi

java - 在java中获取日期之间的差异

转载 作者:IT老高 更新时间:2023-10-28 20:57:04 26 4
gpt4 key购买 nike

Possible Duplicate:
how to calculate difference between two dates using java

我正在尝试这样的事情,我试图从组合框中获取日期

Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance();

int Sdate=Integer.parseInt(cmbSdate.getSelectedItem().toString());
int Smonth=cmbSmonth.getSelectedIndex();
int Syear=Integer.parseInt(cmbSyear.getSelectedItem().toString());

int Edate=Integer.parseInt(cmbEdate.getSelectedItem().toString());
int Emonth=cmbEmonth.getSelectedIndex();
int Eyear=Integer.parseInt(cmbEyear.getSelectedItem().toString());

start.set(Syear,Smonth,Sdate);
end.set(Eyear,Emonth,Edate);

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String startdate=dateFormat.format(start.getTime());
String enddate=dateFormat.format(end.getTime());

我无法减去结束日期和开始日期如何获取开始日期和结束日期之间的差异??

最佳答案

Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance();
start.set(2010, 7, 23);
end.set(2010, 8, 26);
Date startDate = start.getTime();
Date endDate = end.getTime();
long startTime = startDate.getTime();
long endTime = endDate.getTime();
long diffTime = endTime - startTime;
long diffDays = diffTime / (1000 * 60 * 60 * 24);
DateFormat dateFormat = DateFormat.getDateInstance();
System.out.println("The difference between "+
dateFormat.format(startDate)+" and "+
dateFormat.format(endDate)+" is "+
diffDays+" days.");

正如 orange80 指出的那样,当跨越夏令时(或闰秒)时,这将不起作用,并且在使用一天中的不同时间时也可能不会给出预期的结果。使用 JodaTime 可能更容易获得正确的结果,因为我知道在 8 之前使用纯 Java 的唯一正确方法是使用 Calendar 的 add 和 before/after 方法来检查和调整计算:

start.add(Calendar.DAY_OF_MONTH, (int)diffDays);
while (start.before(end)) {
start.add(Calendar.DAY_OF_MONTH, 1);
diffDays++;
}
while (start.after(end)) {
start.add(Calendar.DAY_OF_MONTH, -1);
diffDays--;
}

关于java - 在java中获取日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3796841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com