1

私はAndroidで時間とミリ秒を含むストップウォッチを作ろうとしています。私のクロノメーターは常に7:00:00.000または24時間形式19:00:00.000で開始します。コードは次のとおりです。

public class MainActivity extends Activity {
   TextView tv;
   long init,now,time;

   @Override
   public void onCreate(Bundle savedInstanceState) {
       //...
       myChronometer.setOnChronometerTickListener(new OnChronometerTickListener() {
            public void onChronometerTick(Chronometer cArg) {
                SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm:ss.S");
                now=System.currentTimeMillis();
                time=now-init;
                String s2 = timeFormat.format(time);
                tv.setText(s2);
            }
        });
       final ImageButton buttonStart = (ImageButton)findViewById(R.id.start);
       buttonStart.setOnClickListener(new Button.OnClickListener(){
       @Override
       public void onClick(View v) {
           init=System.currentTimeMillis();
           myChronometer.setBase(init);
           myChronometer.start();
       }});

   }

}

クロノメーターをゼロから開始し、そこから時間を継続する方法はありますか?ありがとうございました

4

2 に答える 2

4

7時間の違いは、タイムゾーンが原因である可能性があります。SimpleDateFormatはデフォルトでシステムのタイムゾーンを使用しますが、System.currentTimeMillis()はUTCで時刻を提供します。

これにより、onChronometerTick()で問題が修正されるはずです。

SimpleDateFormat timeFormat = new SimpleDateFormat("H:mm:ss.S");
timeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
now=System.currentTimeMillis();

フォーマット文字列でhhをHに変更したことに注意してください。

于 2012-12-14T18:31:04.780 に答える
3

クロノメーターは現在の時刻をスタートとして使用しているように見えます。おそらく使用すべきではありません

init=System.currentTimeMillis();

0を開始したいが、

init=0;

お役に立てれば

于 2012-12-14T18:00:27.440 に答える