gpt4 book ai didi

android - 月、日的日期差异

转载 作者:搜寻专家 更新时间:2023-11-01 07:47:34 25 4
gpt4 key购买 nike

实际上我陷入了一个小问题,但没有得到任何适当的解决方案。我有两个相同格式的日期,现在我想要两者之间的差异,但格式是(年 - 月 - 天 - 小时 - 薄荷糖 - 秒),这是我的代码

  public static void getDifferent(Date startDate, Date endDate) {

//milliseconds
long different = endDate.getTime() - startDate.getTime();


System.out.println("startDate : " + startDate);
System.out.println("endDate : " + endDate);
System.out.println("different : " + different);

long secondsInMilli = 1000;
long minutesInMilli = secondsInMilli * 60;
long hoursInMilli = minutesInMilli * 60;
long daysInMilli = hoursInMilli * 24;
long monthInMili = daysInMilli * 30;

long elapsedMonths = different / monthInMili;

long elapsedDays = different / daysInMilli;
different = different % daysInMilli;

long elapsedHours = different / hoursInMilli;
different = different % hoursInMilli;

long elapsedMinutes = different / minutesInMilli;
different = different % minutesInMilli;

long elapsedSeconds = different / secondsInMilli;

Log.d("Difference", "startDate: " + startDate.toString() + " endDate: " + endDate + " Months : " + elapsedMonths + " Days :" + elapsedDays + " Hours :" +
elapsedHours + " Mint :" + elapsedMinutes + " Seconds :" + elapsedSeconds);


}

由于这一行,代码并不完美

long monthInMili = daysInMilli * 30;

所以请指导我。很长一段时间以来,我都没有得到适当的解决方案。

最佳答案

编辑:要获得月份差异,您可以使用 Calender 类。否则,请使用 JodaTime 库(链接在答案底部)。

Calendar startCalendar = new GregorianCalendar();
startCalendar.setTime(startDate);
Calendar endCalendar = new GregorianCalendar();
endCalendar.setTime(endDate);

int diffYear = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR);
int diffMonth = endCalendar.get(Calendar.MONTH) - startCalendar.get(Calendar.MONTH);
int diffDay = endCalendar.get(Calendar.DAY_OF_MONTH) - startCalendar.get(Calendar.DAY_OF_MONTH);

请注意,如果您的日期是 2013 年 1 月 31 日和 2013 年 2 月 1 日,您将以这种方式得到 1 个月的距离,这可能是您想要的,也可能不是您想要的。要更正此问题,请参阅 this answer .

编辑前

只需减去日期并根据您的需要计算毫秒

// Start Date : 01/14/2012 09:29:58
// End Date : 01/15/2012 10:31:48

public static void getDifference(Date d1, Date d2){

// HH converts hour in 24 hours format (0-23), day calculation
// must match with your date format
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

try {

//in milliseconds
long diff = d2.getTime() - d1.getTime();

long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000) % 24;
long diffDays = diff / (24 * 60 * 60 * 1000);

System.out.print(diffDays + " days, ");
System.out.print(diffHours + " hours, ");
System.out.print(diffMinutes + " minutes, ");
System.out.print(diffSeconds + " seconds.");

} catch (Exception e) {
e.printStackTrace();
}

}

您还可以使用 joda-time-library并关注这个 tutorial's second step实现它。

关于android - 月、日的日期差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40817282/

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