0

DateUtils.getRelativeTimeSpanString を取得して、Android で想定されているものを返そうとすると、激しい問題が発生します。

ここで同様の質問をすべて行ってきましたが、投稿された解決策はどれも機能していないか、関連していません。

これが私のコードです:

CharSequence relativeDate = 
DateUtils.getRelativeTimeSpanString(System.currentTimeMillis(), 
            currentNewsItem.getTimeInMilliseconds(), 
            DateUtils.HOUR_IN_MILLIS, DateUtils.FORMAT_ABBREV_RELATIVE);
            dateView.setText(relativeDate);

currentNewsItem.getTimeInMilliseconds メソッドは確かに long を返し (たとえば、今1521759734は正しいように見えます)、getRelativeTimeSpanString は正しくフォーマットされた日付文字列を「2018 年 3 月 23 日」の形式でビューに渡し、正しい日付を認識します。しかし、「x時間前」または「x分前」を通過する必要があり、それがなぜそうではないのか、生涯理解できません。

エミュレータで時刻を確認しましたが、問題はデバイスで発生しているため、タイムゾーンの設定ではありません。

ドキュメントには、期間が 7 日を超える場合、このような日付文字列に戻ると書かれていますが、古い時間として渡されている長さを確認したところ、コンバーターの Web サイトでは 4 時間前の正確な時間であることが示されています。さらに、時間/分前ではなく、正しい日付 (今日) を表示しています。

3 番目のパラメーターに HOUR_IN_MILLIS、MINUTES_IN_MILLIS、および SECONDS_IN_MILLIS 定数を試しましたが、最後の略語パラメーターを削除しようとしましたが、結果は同じです。

さまざまなパブリック メソッド シグネチャを試して、機能する可能性のあるものを見つけようとしましたが、結果はすべて同じです。

誰かがこれを経験したことがありますか、それとも私が間違っているところを誰かが指摘できますか? どうもありがとう。

4

1 に答える 1