0

2つの日付と時刻のミリ秒単位の違いを知りたいのですが、以下のコードを使用しますが、TimeZoneが1時間追加されますが、電話では自動的にタイムゾーンに設定されています....:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    tempo_text = (TextView)findViewById(R.id.tempo_textv);
    Date data = new Date();
    long oggi = data.getTime();
    long finish = Delay(12,30, 18, 04, 2012);
    new TempoIndietro(finish-oggi,1000).start();
}

public class TempoIndietro extends CountDownTimer{

    public TempoIndietro(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);   
    }

    @Override
    public void onFinish() {
    }

    @Override
    public void onTick(long millisUntilFinished) {
        SimpleDateFormat df = new SimpleDateFormat("dd : HH: mm: ss"); 
        df.setTimeZone(TimeZone.getDefault()); 
        String risultato = df.format(new Date(millisUntilFinished)); //arg0 tempo in ms preso dall'onTick
        tempo_text.setText(risultato);

    };

}

public long Delay(int mHour, int mMinute, int giorno, int mese, int anno){
    Calendar cal = Calendar.getInstance();
    cal.setTimeZone(TimeZone.getDefault());
    cal.set(Calendar.DAY_OF_MONTH, giorno);
    cal.set(Calendar.MONTH, mese);
    cal.set(Calendar.YEAR, anno);
    cal.set(Calendar.HOUR_OF_DAY, mHour);
    cal.set(Calendar.MINUTE, mMinute);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    long delay = cal.getTimeInMillis();
    return delay;

}
4

2 に答える 2

0

この質問から助けてください2つの日時の違い

2つの日時の差を取得して長い変数に保存するだけで、日数に変換されます。

于 2012-04-17T11:17:52.213 に答える
0

date2 > date 1 を想定して、次のアプローチを使用します。

  1. date1 と date2 で Date.getTime() メソッドを使用する
  2. 2 つの値を減算します
  3. カレンダー オブジェクトを作成し、時間をミリ秒単位で新しい値に設定します。
カレンダー c = Calendar.getInstance();
c.setTimeInMillis(timeDifference);
  1. get(Calendar.DAY_OF_MONTH) get(Calendar.HOUR) などを使用して値を取得します。

差が 31 日を超える場合は、月とおそらく年の計算を考慮する必要があります。

于 2014-01-21T16:45:49.177 に答える