计算持续时间(以毫秒为单位)并转换为datetime

时间:2014-10-18 20:33:17

标签: android

我有两个变量 - 活动开始时的时间(currentTime)和点击按钮的时间(endTime)。这些变量的值以毫秒为单位(System.currentTimeMillis())。我在Layout中使用它们,因此我将这些值转换为DateFormat "HH:mm:ss"

我想在durationTimecurrentTime之间计算持续时间endTime)并将其转换为日期时间。请看我的代码:

public class MainActivity extends Activity {

            long currentTime_ms, endTime_ms;
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");

            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                currentTime_ms = System.currentTimeMillis();
                Date currentTime = new Date(currentTime_ms);
                currentTime_textView.setText(sdf.format(currentTime));
            }

            public void btnOk_onClick(View v) {

                endTime_ms = System.currentTimeMillis();
                Date endTime = new Date(endTime_ms);
                Date durationTime = new Date(endTime_ms - currentTime_ms);
            }

        }

最后我的错误持续时间。 (例如,我在2 second之后点击按钮并获得durationTime 02:00:02 )。

你能帮我修理一下代码吗?或者也许还有其他时间计算方法?

1 个答案:

答案 0 :(得分:0)

您可以使用SystemClock.elapsedRealtime();

获取当前时间
  • 取两个时间戳(开头和结尾),然后你就可以了 两个不同的长点。
  • 计算它们之间的差异,并调用此函数,该函数将返回您要查找的String。您可以根据需要自定义它!

    public String toText(long difference) {
        DecimalFormat df = new DecimalFormat("00");
    
        int remaining = (int) (difference % (3600 * 1000));
    
        int minutes = (int) (remaining / (60 * 1000));
        remaining = (int) (remaining % (60 * 1000));
    
        int seconds = (int) (remaining / 1000);
        remaining = (int) (remaining % (1000));
    
        int cents = (int) (((int) time % 1000) / 10);
    
        String text = "";
        text += df.format(minutes) + ":";
        text += df.format(seconds) + ":";
        text += df.format(cents);
        return text;
    }
    

在你的情况下,这应该返回"00:02:00":0分,2秒,0美分。

我希望这会有所帮助!!