我有 2 个字符串格式的日期(例如 2012-04-23、2012-03-08),我想找出它们之间的区别。
在 Java 中计算它的最佳方法是什么?
我只关心日期而不是时间
您可以使用以下方法将字符串转换为日期:
String dateString = "2012-04-23";
Date date = new SimpleDateFormat("yyyy-mm-dd").parse(dateString);
您可以在此处进一步了解 SimpleDateFormat 。
至于两个日期之间的差异,您可以使用以下方法以毫秒为单位进行计算:
int milliseconds = dateOne.getTime() - dateTwo.getTime();
getTime()
返回自 1970 年 1 月 1 日以来的毫秒数。
要在几天内转换它,请使用:
int days = milliseconds / (1000 * 60 * 60 * 24)
如果您愿意将第三方 jar 添加到您的项目中,请查看jodatime
DateTimeFormat
DateTimeFormatter 格式化程序 = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime dt = formatter.parseDateTime(your-string);
interval
间隔区间 = new Interval(time1, time2);
您可能还想检查间隔和持续时间之间的区别,它们是 jodatime lib 中的概念
使用 SimpleDateFormat 将字符串转换为 Date 对象,并使用 Date 上的 getTime() 方法获取以毫秒为单位的等效时间。取两个毫秒值之间的差。
您可能希望 DateFormat、Date 和 Calendar 组合如下:
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));
检查SimpleDateFormat,它具有解析功能。