Android - разница во времени - PullRequest
2 голосов
/ 06 ноября 2011

Я изучал другие вопросы и ответы по этому вопросу, но не нашел ничего, что помогло.

Мое приложение записывает результаты гонки и сохраняет в файл.

При первом нажатии записывается текущее время, а когда бегун заканчивает, снова записывает текущее время.

Как я могу рассчитать оба раза, чтобы получить время гонки?

Вот как я получаю текущее время:

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 ]

3 голосов
/ 06 ноября 2011

Вы должны использовать метод currentTimeMillis ()

long millisecondssince1970 = System.currentTimeMillis();

после этого вы можете получить новое время и рассчитать разницу

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

В дополнение к этому вы можете использовать метод getTime () объектов Date для этого. Этот метод также возвращает значение в миллисекундах.

1 голос
/ 06 ноября 2011
long start = System.currentTimeMillis();
// ... the race 
long end = System.currentTimeMillis();
long raceDurationInMillis = end - start;

Вы можете быть более точным и использовать System.nanoTime, но я сомневаюсь, что это существенно изменится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...