日付フィールドがあります(lastUpdated)。この日付を「今日」、「1日前」、「2日前」などの人間が読める形式に変換したい...
Androidライブラリに含まれている Android.text.format.DateUtils APIを使用しています。
これが私の試みです:
DateUtils.getRelativeDateTimeString(context,
lastUpdated.getTime(),
DateUtils.DAY_IN_MILLIS,
DateUtils.WEEK_IN_MILLIS,
DateUtils.FORMAT_SHOW_YEAR);
これが出力です:
0 day ago, 12:00am
yesterday, 9:30am
2 days ago, 1:30pm
Sep 4, 12:30pm
期待した結果:(時間情報なし)
0 day ago --------- This should be 'today'
yesterday
2 days ago
Sep 4
注、lastUpdatedから時間をクリアした場合。時間情報として「12:00 am」と表示されます。
誰かがアイデアを持っていますか?出力から時間を削除する方法はありますか?
ありがとうございました!
そのために DateUtils.getRelativeTimeSpanString を使用できます。
long now = System.currentTimeMillis();
DateUtils.getRelativeTimeSpanString(lastUpdated.getTime(), now, DateUtils.DAY_IN_MILLIS);
最近の時間のカスタムハンドラーと、より離れた日付の標準ハンドラーが必要なようです。このようなものはうまくいくでしょう:
public String getTimeDiff(long secondsTimeDiff)
{
long secondsInOneDay = 84600;
int maxDaysAgo = 10;
if ( secondsTimeDiff < secondsInOneDay)
{
return "today";
}
else if ( secondsTimeDiff < 2*secondsInOneDay)
{
return "yesterday";
}
else if ( secondsTimeDiff < maxDaysAgo*secondsInOneDay)
{
int days = (int) (secondsTimeDiff / secondsInOneDay);
return days + " days ago";
}
else
{
//use normal DateUtils logic here...
return "....";
}
}