Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Hiển thị giờ địa phương (local time) trong SQLite Android

Giới thiệu

SQLite trên Android hỗ trợ hàm ngày giờ mạnh mẽ. Ví dụ này minh họa cách lấy và hiển thị thời gian địa phương (local time) khi truy vấn dữ liệu.

Bước 1 & 2: Tạo project và giao diện

Giống như các ví dụ trước: 2 EditText (tên, lương), 4 Button, 1 ListView. Xem chi tiết tại bài BLOB SQLite.

Bước 3: MainActivity.java

Code tương tự, chỉ khác ở DatabaseHelper.

Bước 4: DatabaseHelper.java - Truy vấn với localtime

public ArrayList<String> getAllContacts() {
    ArrayList<String> list = new ArrayList<>();
    SQLiteDatabase db = getReadableDatabase();
    
    // Sử dụng DATETIME('now', 'localtime') để lấy giờ địa phương
    Cursor cursor = db.rawQuery(
        "SELECT id, name, salary, DATETIME('now', 'localtime') as local_time " +
        "FROM " + TABLE_NAME, null);

    if (cursor.moveToFirst()) {
        do {
            int id = cursor.getInt(0);
            String name = cursor.getString(1);
            String salary = new String(cursor.getBlob(2));
            String localTime = cursor.getString(3);
            list.add(id + " : " + name + " : " + salary + " : " + localTime);
        } while (cursor.moveToNext());
    }
    cursor.close();
    return list;
}

Giải thích hàm thời gian SQLite

  • DATETIME('now'): Thời gian UTC hiện tại.
  • DATETIME('now', 'localtime'): Chuyển UTC sang giờ địa phương của thiết bị.
  • DATETIME('now', 'utc'): Ép buộc trả về UTC.
  • Có thể cộng/trừ: DATETIME('now', '+1 hour'), DATETIME('now', '-1 day').

Kết quả

Hiển thị giờ địa phương (local time) trong SQLite Android

Mỗi bản ghi hiển thị kèm theo thời gian địa phương tại момент truy vấn.

Lưu ý

Hàm DATETIME('now', 'localtime') được tính tại thời điểm thực thi truy vấn, không phải lúc insert. Muốn lưu thời gian tạo bản ghi, dùng DEFAULT CURRENT_TIMESTAMP khi tạo bảng.