0

カレンダー ライブラリを使用して、アプリから日付を保存しています。私は sqlite3 を使用しており、int と文字列のみをデータベースに保存できます。Calendar は long に変換され、逆変換すると正しい日付が表示されます。ただし、データベースに保存するには、intに変換する必要があります。int を long に戻して setTimeInMillis() を使用すると、日付が変わります。long から int に変換すると、精度が失われることはわかっています。回避策はありますか?私がやっていることには、カレンダー ライブラリを使用する必要があると言われました。以下は、私に問題、アイデアを与えているコードです。すでにグーグル検索を行っていて、運がなかった

    long timing=0;
    timing =dateAndTime.getTimeInMillis();
    testDate.setTimeInMillis(timing);
    int dates=  (int) timing;
    timing=dates;
    testDate.setTimeInMillis(timing);
4

2 に答える 2

3

正確さを失っているわけではありません。long は整数よりも多くのバイトを保持するため、int が保持できないデータはすべて失われます。long を String に変換し、それをそのまま格納する方がよいでしょう ( Long.toString(l))。データベースから取得したい場合は、文字列を長い ( Long.parseLong(s)) に解析するだけです。

于 2012-05-20T20:51:28.210 に答える
2

ここで int がどれほど制限されているかを理解するために、int に保存できる最大時間 (ミリ秒単位) は 49 日です。long には、5 億 8000 万年にわたってミリ秒をカウントするのに十分な情報が保持されます。

于 2012-05-20T20:53:39.520 に答える