SimpledateFormat在实际时间中增加了30分钟

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (123)

我正在尝试创建一个简单的音乐播放器应用程序。我想在左边显示歌曲的当前运行时,在右边显示歌曲的剩余时间。在mm:SS格式。我正在调用一个线程,它定期更新查找栏和左右时间。这首歌长达4分36秒。所以我想看到的是0:00在左边和4:36刚开始的时候。左边的时间持续增加1秒,同时右边减少1秒。但我看到的是30:00左转34:36右转。另外30分钟的时间将被添加到两次最初的时间。为什么会发生这种事?我在这里有遗漏什么吗?

public void updateThread(){
    thread = new Thread(){
        @Override
        public void run() {enter code here
            try{
                while(mediaPlayer != null && mediaPlayer.isPlaying()){
                    Thread.sleep(50);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(getApplicationContext(), String.valueOf(mediaPlayer.getCurrentPosition()), Toast.LENGTH_LONG).show();
                            seekBar.setMax(mediaPlayer.getDuration());
                            seekBar.setProgress(mediaPlayer.getCurrentPosition());
                            leftTime.setText(String.valueOf(new SimpleDateFormat("m:ss").format(new Date(mediaPlayer.getCurrentPosition()))));
                            rightTime.setText(String.valueOf(new SimpleDateFormat("m:ss").format(new Date(mediaPlayer.getDuration() - mediaPlayer.getCurrentPosition()))));
                        }
                    });
                }
            }
            catch (InterruptedException e){
                e.printStackTrace();
            }
        }
    };
    thread.start();**
提问于
用户回答回答于

日期(长日期)分配日期对象并初始化它,以表示自称为“时代”的标准基本时间(即1970年1月1日,00:00:00:00)以来指定的毫秒数。

例如,new Date(1000)表示日期。January 1, 1970, 00:00:01 GMT

SimpleDateFormat使用默认时区,除非另有指定。是否在一个时区,如GMT+N:30?这就是为什么你看到增加了30分钟。其他时区的用户将看到不同的输出。

没有理由用Date/SimpleDateFormat因为你不是和一个真正的约会对象一起工作的。手动转换getCurrentPosition返回的Millis。

所属标签

可能回答问题的人

  • 嗨喽你好

    7 粉丝480 提问9 回答
  • 富有想象力的人

    3 粉丝0 提问7 回答
  • uncle_light

    5 粉丝518 提问6 回答
  • 人生的旅途

    10 粉丝484 提问6 回答

扫码关注云+社区

领取腾讯云代金券