我已经看过关于这个主题的其他问答,但没有发现任何有用的东西。
我的应用会记录比赛结果并保存到文件中。
首先点击它会写入当前时间,当跑步者完成时,它会再次记录当前时间。
如何计算两次获得比赛时间?
以下是我获取当前时间的方法:
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
答案 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,但我怀疑它会产生重大影响。