我一般都是Java和DateTime格式的新手,我应该从CSV文件中转换GPS数据。 我的问题是如何处理我使用的格式。我从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秒。
答案 0 :(得分:3)
您可以通过以下方式完成此操作:
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之外的时区,它甚至支持夏令时。 - 安德烈亚斯