首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android - chronometer不是从零开始

android - chronometer不是从零开始
EN

Stack Overflow用户
提问于 2012-12-15 01:39:05
回答 2查看 2.8K关注 0票数 1

我正在尝试用android做一个秒表,包括小时和毫秒。我的时钟总是从7:00:00.000开始,或者以24小时格式19:00:00.000开始。代码如下:

代码语言:javascript
复制
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();
       }});

   }

}

有没有办法从零开始计时,并从那里继续计时?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-15 02:31:05

7小时的差异可能是由于您所在的时区造成的。默认情况下,协调时使用系统的时区,而System.currentTimeMillis()以协调时为单位提供时间。

这应该可以在onChronometerTick()中解决您的问题:

代码语言:javascript
复制
SimpleDateFormat timeFormat = new SimpleDateFormat("H:mm:ss.S");
timeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
now=System.currentTimeMillis();

请注意,我在格式字符串中将hh更改为H。

票数 4
EN

Stack Overflow用户

发布于 2012-12-15 02:00:27

在我看来,计时器是以当前时间为起点的。您可能不应该使用

代码语言:javascript
复制
init=System.currentTimeMillis();

如果您想要开始一个0,但是

代码语言:javascript
复制
init=0;

希望这能有所帮助

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13883656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档