我有字符串发布日期,如:
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)
将两个日期转换为日历并将时间设为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)