Преобразование DateTime из ISO_INSTANT в секунды с полуночи

Я новичок в форматах Java и DateTime в целом, и я должен конвертировать данные GPS из файлов CSV. У меня вопрос, как это сделать для формата, с которым я работаю. Точки данных, которые я получаю из данных GPS, имеют следующий формат:

время, широта, долгота, высота

Я разделил различные точки данных и поместил их в строковый массив, и я должен преобразовать точки данных в целые или двойные массивы следующим образом:

public void convert() {
int n = timesstr.length; //Amount of data points
times = new int[n]; //Array for time in seconds (int)       
latitudes = new double[n]; //Array for latitudes (double)
longitudes = new double[n]; //Array for longitudes (double)
elevations = new double[n]; //Array for elevations (double)
}

Я планирую сделать цикл for, конвертируя элементы в массивах один за другим. Теперь проблема в том, как я должен преобразовывать время от точки данных в секунды с полуночи, так как точка данных для времени отформатирована как ISO_INSTANT, например

2017-08-13T08:52:26.000Z

Как мне выполнить анализ и преобразование точек данных из ISO_INSTANT в секунды с полуночи? Согласно полученной информации, точка данных

2017-08-13T08:52:26.000Z

Должен дать целое число 31946 после преобразования, как и 31956 секунд после полуночи.

1 ответ

Решение

Вы можете сделать это следующим образом:

LocalDateTime.parse("2017-08-13T08:52:26.000Z", DateTimeFormatter.ISO_DATE_TIME).get(ChronoField.SECOND_OF_DAY);

Или, как указал Andreas, вы можете сделать:

ZonedDateTime.parse("2017-08-13T08:52:26.000Z").get(ChronoField.SECOND_OF_DAY);

короче и мягче Он даже поддерживает переход на летнее время, если указан часовой пояс, отличный от Z. - Андреас

Другие вопросы по тегам