2017-09-14 18 views
2

一般的にJavaとDateTimeの形式が新しく、GPSデータをCSVファイルに変換する必要があります。 私の質問は、私が作業している形式のためにこれがどのように行われるかです。次のように私はGPSデータから取得していますデータポイントは形式である:私は別のデータポイントを分割し、それらを入れているDateTimeをISO_INSTANTから深夜の秒に変換する

時間、緯度、経度、標高

文字列配列、及び次のようにIは、整数またはダブル配列のいずれかにデータポイントを変換することになっている:

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) 
} 

Iは配列内の要素を次々に変換、forループ行うことを計画してい1。今度は問題は、データポイントから時刻を深夜から秒に変換する方法です。時間のデータポイントはISO_INSTANTとしてフォーマットされています。

2017-08-13T08:52:26.000Z

は、どのように私は真夜中からの秒にISO_INSTANTからのデータポイントを解析し、変換して行くべきですか? 52::私が得た情報、データポイント

2017-08-13T08によると26.000Z

は31956秒過去真夜中のように、変換後の整数31946を与える必要があります。

+3

[java.time.InstantのJavadoc](https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)を読んだことがありますか? –

答えて

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が与えられている以外のタイムゾーンであれば、夏時間をサポートすることさえできます。 - Andreas

+0

'ZonedDateTime.parse(" 2017-08-13T08:52:26.000Z ")。get(ChronoField.SECOND_OF_DAY)'は、より短く、より寛大です。 'Z '以外のタイムゾーンが指定されている場合、夏時間をサポートすることさえできます。 – Andreas

+0

@Andreas更新、ありがとうございます。 – Oleg

+0

指定されたタイムゾーン(Asia/Jayapuraなど)を認識する必要がない限り、私は 'ZonedDateTime'よりも' OffsetDateTime'を好むでしょう。 3番目のオプションは 'Instant.parse(" 2017-08-13T08:52:26.000Z ")。atOffset(ZoneOffset.UTC).get(ChronoField.SECOND_OF_DAY);'です。 –

関連する問題