在Java/Android中显示天数差异

在Java/Android中显示天数差异,java,android,Java,Android,我想区分当前日期和行动日期。差异应显示为: 三天前 4天前,我的儿子 如何在Android中使用Java实现同样的功能 它不适用于我,并返回实际日期本身: Date d = Utils.instanceDateFormat().parse(text.toString()); String moments = DateUtils.getRelativeTimeSpanString(d.getTime(), new Date().getTime(), DateUtil

我想区分当前日期和行动日期。差异应显示为:

三天前 4天前,我的儿子

如何在Android中使用Java实现同样的功能

它不适用于我,并返回实际日期本身:

Date d = Utils.instanceDateFormat().parse(text.toString());
                String moments = DateUtils.getRelativeTimeSpanString(d.getTime(), new Date().getTime(), DateUtils.SECOND_IN_MILLIS,
                        DateUtils.FORMAT_ABBREV_ALL).toString();
试试这个

SimpleDateFormat myFormat = new SimpleDateFormat("dd MM yyyy");
String currentDateInput = "23 01 1997";
String actionDateInput = "27 04 1997";

try {
    Date currentDate = myFormat.parse(currentDateInput);
    Date actionDate = myFormat.parse(actionDateInput);
    long diff = actionDate.getTime() - currentDate.getTime();
    System.out.println ("Days: " + TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS));
} catch (ParseException e) {
    e.printStackTrace();
}

您必须修改
SimpleDataFormat
,以满足您的需要。

使用此选项可以获得两个日期对象之间的差异

public static int getDaysDifference(Date fromDate,Date toDate)
{
if(fromDate==null||toDate==null)
return 0;

return (int)( (toDate.getTime() - fromDate.getTime()) / (1000 * 60 * 60 * 24));
}

我认为您需要将秒(单位:毫秒)的最小分辨率更改为天(单位:毫秒),如下-->

DateUtils.getRelativeTimeSpanString(日期,System.currentTimeMillis(),DateUtils.DAYS_IN_MILLIS,DateUtils.FORMAT_ABBREV_ALL)。toString()

使用该选项,您未来的所有日期将解析为X天,过去的日期将解析为X天之前,但前一天除外,前一天将解析为昨天,但如果您需要解析为1天之前,则需要稍微调整


希望这能解决问题

是的,我可以这样做,但是,有没有办法通过DateUtils?谢谢你,伙计。你的解决方案肯定是放弃这个词。但是,你知道我是否可以使用DateUtils?尝试过,但它不起作用。