小编典典

在 Android SQLite 中处理日期的最佳方法

all

我在使用 SQLite 的 Android 应用程序上处理日期时遇到了一些问题。我有几个问题:

  1. 我应该使用什么类型在 SQLite 中存储日期(文本、整数、…)?
  2. 鉴于存储日期的最佳方式,我如何使用 ContentValues 正确存储它?
  3. 从 SQLite 数据库中检索日期的最佳方法是什么?
  4. 如何在 SQLite 上进行 sql 选择,按日期排序结果?

阅读 62

收藏
2022-05-30

共1个答案

小编典典

您可以使用文本字段将日期存储在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;
}
2022-05-30