android - 时差

时间:2011-11-05 23:12:03

标签: java android time

我已经看过关于这个主题的其他问答,但没有发现任何有用的东西。

我的应用会记录比赛结果并保存到文件中。

首先点击它会写入当前时间,当跑步者完成时,它会再次记录当前时间。

如何计算两次获得比赛时间?

以下是我获取当前时间的方法:

public class Stopwatch extends Activity {
// GUI controls
Button startRun;
Button checkIn;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setRequestedOrientation(
        ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        setContentView(R.layout.stopwatch); 

        final SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");


         startRun = (Button) findViewById(R.id.start);
        startRun.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter("/sdcard/timer.txt"));
            out.write("Race start time" + "," + dateFormat.format(new Date()));
            out.write("\r\n");
            out.close();
        } catch (Exception e) {
        }

        startRun.setEnabled(false);

    }
    });

        checkIn = (Button) findViewById(R.id.counter);
        checkIn.setOnClickListener(new OnClickListener() {

            private int entryCounter = 1;

        public void onClick(View v) {
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter("/sdcard/timer.txt", true));
            out.write(entryCounter +  "," + dateFormat.format(new Date()) + "," ***time difference here***);
            entryCounter++;
            out.write("\r\n");
            out.close();
        } catch (Exception e) {
        }

    }
    });



    }

}

我正在寻找像这样的格式

0,01/10/2011 09:02:00
1,01/10/2011 09:18:42,00:16:42
2,01/10/2011 09:18:42,00:16:42
3,01/10/2011 09:20:07,00:18:07

2 个答案:

答案 0 :(得分:3)

您应该使用方法currentTimeMillis()

long millisecondssince1970 = System.currentTimeMillis();

之后你可以得到新的时间并计算差异

long newTime = System.currentTimeMillis();
long raceTimeinMilliseconds = newTime - millisecondssince1970;

除此之外,您还可以使用Date对象的getTime()方法来执行此操作。此方法也返回毫秒值。

答案 1 :(得分:1)

long start = System.currentTimeMillis();
// ... the race 
long end = System.currentTimeMillis();
long raceDurationInMillis = end - start;

您可能更精确并使用System.nanoTime,但我怀疑它会产生重大影响。