Преобразование 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. - Андреас