1. ホーム
  2. アンドロイド

[解決済み】AndroidのSQLiteで日付を操作する最適な方法【終了しました

2022-04-03 17:43:59

質問

SQLiteを使用するAndroidアプリケーションで、日付の処理に困っています。 いくつか質問があります。

  1. SQLiteで日付を保存するにはどのような型を使用すればよいですか(text、integer、...)?
  2. 日付の保存に最適な方法として、ContentValueを使用して適切に保存する方法を教えてください。
  3. SQLiteデータベースから日付を取得する最も良い方法は何ですか?
  4. SQLiteでsql selectを作成し、結果を日付順に並べるには?

どのように解決するのですか?

テキストフィールドを使用して、日付の保存を SQLite .

を使用した場合のデフォルトは、UTCフォーマットでの日付の保存です。 datetime('now') (yyyy-MM-dd HH:mm:ss) で、日付カラムでソートできるようになります。

から文字列として日付を取得する SQLite を使用すると、必要に応じて地域ごとの書式に変換することができ、 カレンダーや android.text.format.DateUtils.formatDateTime メソッドを使用します。

私が使っている地域化されたフォーマッターメソッドを紹介します。

public static String formatDateTime(Context context, String timeToFormat) {

    String finalDateTime = "";          

    SimpleDateFormat iso8601Format = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss");

    Date date = null;
    if (timeToFormat != null) {
        try {
            date = iso8601Format.parse(timeToFormat);
        } catch (ParseException e) {
            date = null;
        }

        if (date != null) {
            long when = date.getTime();
            int flags = 0;
            flags |= android.text.format.DateUtils.FORMAT_SHOW_TIME;
            flags |= android.text.format.DateUtils.FORMAT_SHOW_DATE;
            flags |= android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
            flags |= android.text.format.DateUtils.FORMAT_SHOW_YEAR;

            finalDateTime = android.text.format.DateUtils.formatDateTime(context,
            when + TimeZone.getDefault().getOffset(when), flags);               
        }
    }
    return finalDateTime;
}