だから私はJavaのCalendar/Time/Dateにちょっと慣れていませんが、ネットでそれらについてたくさん読んだことがあります。
これが私がしなければならないことです:
Avl データ パケットを Communication Server に送信する外部デバイスがあり、データ部分の解析プロセスを実行しています。
データ パケットのどこかで、デバイスは 32 ビットのタイムスタンプを送信し、これを解析して、GPS からのポイントのレコードが保存された時刻に変換する必要があります。
タイムスタンプは、2007.01.01 00:00 UTC からの秒数を示します
ここに、残りの実験で試した中で最も近いと感じたサンプル コードを示します。
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
long now = (long)(TimeStampSeconds.longValue() * 1000);
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(2007, 0, 1);
calendar.setTimeInMillis(now);
System.out.println(now + " = " + formatter.format(calendar.getTime()));
その後、calendar.set が新しいエポックを作成しないため、.setTimeInMills が機能しないことがわかりました。ただし、次のようなクレイジーな結果が得られます。
バイナリ タイムスタンプ: 0000101011000001010110001111011100001111
秒: 46193506063
46193506063000 = 25/10/3433 04:27:43.000
1970 年から 2007 年までの 37 年間だけを見逃してはいけませんか??
デバイスから取得した秒数から時間を見つける方法を見つけたいのですが、それらのエポックは 1/1/2007 で、Java のエポックは 1/1/1970 です。
編集: 私が欲しいのは、time:1/1/2007 プラス タイムスタンプの時間です。質問が少し明確になったことを願っています..
誰か何かアイデア?? 事前にThx