1

イベントのタイムスタンプを日付に変換しようとしています。コードは次のとおりです。

Calendar c = Calendar.getInstance();
c.setTimeInMillis(event.timestamp/1000000);//time in ms (timestamp is in ns)
System.out.println((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(c.getTime()));

どうして1970-01-02を手に入れるのですか?

4

1 に答える 1

4

SensorEvent.timestampを使用していると仮定します。ドキュメントには、これが最後の起動からのナノ秒単位のアウェイク時間(SystemClock.uptimeMillis()と比較可能)であり、Unixエポックからの時間ではないことが記載されていません。つまり、デバイスが起動してから2日未満のようです。

また、Calendar.getTime()Dateオブジェクトを返し、ミリ秒かかるDateコンストラクターがあるため、コードを短縮できます。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(new Date(event.timestamp / 1000000)));
于 2012-08-26T16:12:00.877 に答える