我有2个String格式的日期(例如2012-04-23,2012-03-08),我想找到它们之间的区别。
在Java中计算它的最佳方法是什么?
我只关心日期而不是时间
答案 0 :(得分:3)
您可以使用以下方法将字符串转换为日期:
String dateString = "2012-04-23";
Date date = new SimpleDateFormat("yyyy-mm-dd").parse(dateString);
您可以进一步了解SimpleDateFormat here。
至于两个日期之间的差异,你可以用毫秒计算它:
int milliseconds = dateOne.getTime() - dateTwo.getTime();
getTime()
返回自1970年1月1日以来的毫秒数。
要在几天内转换它,请使用:
int days = milliseconds / (1000 * 60 * 60 * 24)
答案 1 :(得分:2)
如果您愿意在项目中添加第三方jar,请查看jodatime
DateTimeFormat
DateTimeFormatter formatter = DateTimeFormat.forPattern(“dd / MM / yyyy HH:mm:ss”);
DateTime dt = formatter.parseDateTime(your-string);
interval
间隔间隔=新间隔(time1,time2);
您也可能想要检查间隔和持续时间之间的差异,这些是jodatime lib中的概念
答案 2 :(得分:1)
使用SimpleDateFormat将字符串转换为Date对象,并使用Date上的getTime()方法获取等效时间(以毫秒为单位)。取两毫秒值之间的差异。
答案 3 :(得分:0)
检查SimpleDateFormat,它有一个解析功能。
答案 4 :(得分:0)
您可能需要DateFormat,日期和日历组合如下:
DateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = dFormat.parse("2012-04-23");
Date date2 = dFormat.parse("2012-03-08");
long timeDifInMillis = date1.getTime() - date2.getTime();
Date dateDiff = new Date(timeDifInMillis);
Calendar diffCal = Calendar.getInstance();
diffCal.setTime(dateDiff);
System.out.println("Days="+diffCal.get(Calendar.DAY_OF_MONTH));
System.out.println("Months="+diffCal.get(Calendar.MONTH));
System.out.println("Years="+(diffCal.get(Calendar.YEAR)-1970));