11

私は本当に簡単なことをしようとしています。現在の日から2日を差し引こうとしています。UIから時間数を取得します。この例では、UI から 48 時間を取得しています。私は次のことをしていますが、ここで何が間違っているのかわかりません。この結果、時間から数分しか差し引かれないと思います。

long timeInEpoch = (currentMillis()/1000 - (48 * 60 * 60)); //48 comes from UI

public long currentMillis(){
    return new Date().getTime();
}

d = new Date(timeInEpoch * 1000);

私も試しました

d1 = new Date(timeInEpoch);

何も機能していないようです。ここで何が間違っていますか?

4

5 に答える 5

19

試す

    long millis = System.currentTimeMillis() - 2 * 24 * 60 * 60 * 1000; 
    Date date = new Date(millis);

それは間違いなく機能します

于 2013-03-25T04:41:42.883 に答える
3

次のようにCalendar APIを使用して、Dateオブジェクトから 2 日を減算します。

Calendar c = Calendar.getInstance();
c.setTime(d);
c.add(Calendar.DATE, -2);
d.setTime( c.getTime().getTime() );

long millisec = d.getTime();
于 2013-03-25T04:29:05.967 に答える
2

コードは問題ありません。変数 d は、サーバーの現在の時刻から 48 時間のオフセットにある必要があります。

サーバーとクライアントが同時に実行されていることを確認してください。それ以外の場合は、サーバー管理者に展開マシンの時刻を修正するよう依頼してください。

また、クライアントが日本でブラウザを開き、サーバーが米国で実行されている場合、標準時差のためにこの違いに気付くでしょう。

于 2013-03-25T04:41:40.687 に答える
1

これを試して

   long diff = Math.abs(d1.getTime() - d2.getTime());
   long diffDays = diff / (2*24 * 60 * 60 * 1000);
于 2013-03-25T04:24:57.390 に答える
1

古い java.util.Date および .Calendar クラスは、厄介なことで有名なので避けてください。

Joda-Time または Java 8 に組み込まれた新しい Java.time パッケージのいずれかを使用します。これに関する何百もの質問と回答を StackOverflow で検索してください。

Joda-Time は、時間、日などを加算および減算するメソッドを提供します。計算は賢明な方法で行われ、夏時間のナンセンスやその他の問題を処理します。

Joda-Time 2.7 の簡単な例 (これは実際には重複した質問であるため、詳細については他の人を参照してください)。

DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zone );
DateTime fortyEightHoursAgo = now.minusHours( 48 );
DateTime twoDaysAgo = now.minusDays( 2 );
于 2015-01-29T18:22:32.693 に答える