我对 Java 和 DateTime 格式不太熟悉,我应该从 CSV 文件转换 GPS 数据。 我的问题是如何针对我正在使用的格式完成此操作。我从 GPS 数据获取的数据点的格式如下:
time,lat,lon,elevation
我已经分割了不同的数据点并将它们放入字符串数组中,并且我应该将数据点转换为整数或 double 组,如下所示:
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 秒。
最佳答案
您可以通过以下方式完成:
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);
is shorter, and more lenient. It even supports Daylight Savings Time, if a time zone other that Z is given. - Andreas
关于java - 将 DateTime 从 ISO_INSTANT 转换为从午夜算起的秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46227378/