我正在尝试在Android中制作一个包含小时和毫秒的秒表。我的计时器始终以7:00:00000或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();
}});
}
}
无论如何都要将计时器从零开始并从那里继续时间? 谢谢
答案 0 :(得分: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.
答案 1 :(得分:3)
在我看来,计时器使用当前时间作为开始。 您可能不应该使用
init=System.currentTimeMillis();
如果你想开始0,但是
init=0;
希望这有帮助