在Android的两个日期之间获得差异

Uda*_*ran 6 java android date

我有字符串发布日期,如:

2011-03-27T09:39:01.607
Run Code Online (Sandbox Code Playgroud)

并且有当前日期.

我希望以下列形式区分这两个日期:

2 days ago 
1 minute ago etc..
Run Code Online (Sandbox Code Playgroud)

取决于发布日期.

我使用此代码将发布日期转换为毫秒:

public long Date_to_MilliSeconds(int day, int month, int year, int hour, int minute) {
    Calendar c = Calendar.getInstance();
    c.set(year, month, day, hour, minute, 00);
    return c.getTimeInMillis();
}
Run Code Online (Sandbox Code Playgroud)

这个当前日期: long now = System.currentTimeMillis();

并计算差异:

String difference = (String) DateUtils.getRelativeTimeSpanString(time,now, 0);
Run Code Online (Sandbox Code Playgroud)

但它返回像May 1 , 1970或什么..

如何区分过帐日期和当前日期.

Law*_*nti 21

您可以使用getRelativeTimeSpanString().它返回一个像"1分钟前"的字符串.这是一个真实的简单示例,它告诉应用程序运行了多长时间.

private long mStartTime;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mStartTime = System.currentTimeMillis();
}

public void handleHowLongClick(View v) {
    CharSequence cs = DateUtils.getRelativeTimeSpanString(mStartTime);
    Toast.makeText(this, cs, Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)


Shi*_*own 7

将两个日期转换为日历并将时间设为0(

today.set(Calendar.HOUR_OF_DAY, 0);
    today.set(Calendar.MINUTE, 0);
    today.set(Calendar.SECOND, 0);
Run Code Online (Sandbox Code Playgroud)

).
然后使用这个乐趣:

public final static long SECOND_MILLIS = 1000;
public final static long MINUTE_MILLIS = SECOND_MILLIS*60;
public final static long HOUR_MILLIS = MINUTE_MILLIS*60;
public final static long DAY_MILLIS = HOUR_MILLIS*24;

 public static int daysDiff( Date earlierDate, Date laterDate )
    {
        if( earlierDate == null || laterDate == null ) return 0;
        return (int)((laterDate.getTime()/DAY_MILLIS) - (earlierDate.getTime()/DAY_MILLIS));
    }
Run Code Online (Sandbox Code Playgroud)


Pra*_*nCG 0

你得到 1970 的原因是因为它是以毫秒为单位的纪元日期。要获得实际差异,请使用以下内容。

使用乔达时间

  • Joda time 是一个 500kb 以上的库,可能不适合 Android 应用程序。 (4认同)