将DateTime从ISO_INSTANT转换为午夜的秒数

时间:2017-09-14 20:03:28

标签: java arrays datetime gps

我一般都是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秒。

1 个答案:

答案 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之外的时区,它甚至支持夏令时。 - 安德烈亚斯