2017-03-02 14 views
0

私はゲームレベルを完了するのにかかる最短時間の記録を保持したいと思います。新しい期間と保存期間を比較し、そのうちの短い期間と交換するにはどうすればよいですか?

SharedPreferencesに保存します。今は、各レベルの時間を保存して取得することができ、ListViewで設定できますが、「00:00」のようなString形式で保存しています。

私はレベルが私が

String time = String.format("%02d", Minutes) + ":" + String.format("%02d", Seconds); 

のようにそれを保存完了したときに、私はSharedPreferencesに格納し、最後に1で1秒ごとに増加する2つのint(S)(分、秒)を使用しています。しかし、私はレベルを完了するために取られた最新の時間が以前の最短時間よりも短いか比較することができません。

私は、特定のレベルのユーザーが以前よりも時間がかかりすぎる場合にのみ、時間を交換したいと考えています。

答えて

1

代わりにタイムスタンプを保存してください。 System.currentTimeMillis()を使用すると、レベルが開始された時刻を取得し、終了時に再度呼び出すことができます。差分を取得し、文字列ではなく長さとして保存します。あなたが、私はそれは24807913を返しミリス分を変換しようとしています。この

long startTime = System.currentTimeMillis(); 
     try { 
      Thread.sleep(3000); 
      long endTime = System.currentTimeMillis(); 

      long differenceTime = endTime - startTime; 
      Log.d("TEST", String.format("%02d %02d", 
        TimeUnit.MILLISECONDS.toMinutes(differenceTime), 
        TimeUnit.MILLISECONDS.toSeconds(differenceTime) - 
          TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(differenceTime)) 
      )); 
     } catch (Exception e) { 

     } 
+0

行われエヴリシング、などの

String.format("%02d %02d", TimeUnit.MILLISECONDS.toMinutes(millis), TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)) ); 

何かを使用して秒と分にそれらミリ秒に変換することができ、私はTimeUnitでを試してみました。 MILLISECONDS.toMinutes(ミリ秒);それでもTmeを返します。このようにして、int mins =(millis/1000)/ 60を試しました。それはまだ同じを返します... –

+0

私はそれを使用する方法の例で私の答えを編集しました。 –

関連する問題