3

1989 年 12 月 31 日午前 12 時から現在までの秒数を取得する必要があります。2 番目のパーサーは、Garmin Fleet Management から提供されます。これが私のコードです:

public int getDate(){
    Date d1 = new Date(1989, 12, 31, 12, 0, 0);
    Date today = new Date();
    long diff = today.getTime() - d1.getTime();
    return (int)(diff/1000);
}

Garmin パーサーの getDate() からの秒数が、現在ではなく、2021 年 7 月 28 日の午後 8 時 35 分と表示されます。

ここで説明されている(ドキュメントによる)必要な日時

これは符号なし 32 ビット整数で、値は 1989 年 12 月 31 日午前 12 時 (UTC) からの秒数です。

どこで間違えた?

4

5 に答える 5

1

非推奨の API を使用しています。そして、年の引数は直接の年ではなく、1900 年からの年数です。

@Deprecated public Date(int year, int month, int date, int hrs, int min) 非推奨。JDK バージョン 1.1 以降、Calendar.set(年 + 1900、月、日、時、分) または GregorianCalendar (年 + 1900、月、日、時、分) に置き換えられました。Date オブジェクトを割り当てて初期化し、年、月、日、時、および分引数で指定された分の開始時刻をローカル タイム ゾーンで表すようにします。パラメータ: year - 1900 を引いた年。

于 2016-03-25T12:19:00.850 に答える
1
于 2016-03-26T00:25:39.143 に答える