Nếu xử lý DateTime từ chuỗi JSON trong lập trình ANdroid, thì dữ liệu này đang ở kiểu chuỗi STRING và bạn không thể sử dụng nó để thực hiện các xử lý liên quan đến định dạng Datetime được. Để thực hiện trước tiên bạn cần chuyển về kiểu DateTime và sau đó mới có thể sử dụng xử lý như một Datetime trong Java Android.

Chuyển STRING về DateTime bằng Java Android

Ví dụ: Nếu chuỗi String từ JSON của bạn có dạng tương tự “2018-01-01 01:01:01”, tức là theo đúng định dạng “yyyy-MM-dd HH:mm:ss”. Thì bạn cần khai báo 1 biến có kiểu định dạng DateTime như trên.

Tiếp theo, bạn cần xác định kiểu định dạng sẽ chuyển đổi qua. Như muốn đổi lại thứ tự là ngày-tháng-năm, thì khai báo 1 biến DateTime có định dạng “dd-MM-yyyy”. Và sau đây là một hàm chuyển đổi kiểu định dạng mà bạn có thể tham khảo.

public static String converttoDate(String _str) {
    Calendar c = Calendar.getInstance();
    String strDt = "";
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
    SimpleDateFormat newFormat = new SimpleDateFormat("dd-MM-yyyy");
    try {
        Date datetime = format.parse(_str);
        strDt = newFormat.format(datetime);
        return strDt;
    } catch (Exception e) {
        e.printStackTrace();
        strDt = simpleDate.format(c.getTime());
        return strDt;
    }
}

Kết quả trả về là String nhưng bạn có thể trả về là DateTime theo mục đích sử dụng.

Hàm tính chênh lệch 2 mốc thời gian bằng Java Android

Dưới đây là một ví dụ về chuyển đổi qua DateTime và thực hiện phép toán để tính chênh lệch thời gian trong Android.

public static String Diffdate(String _str) {
    Calendar c = Calendar.getInstance();
    SimpleDateFormat _newformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
    try {
        Date datetime = _newformat.parse(_str);
        String currentime = _newformat.format(c.getTime());
        Date _cvcurrent = _newformat.parse(currentime);
        Long diff = _cvcurrent.getTime() - datetime.getTime();
        // trừ ngày tháng năm tính thời gian cập nhật
        int hours = (int) (diff / (1000 * 60 * 60));
        int mins = (int) (diff / (1000 * 60)) % 60;
        int days = (int) (diff / (24 * 60 * 60 * 1000));

        if (days > 0) {
            return days + " ngày trước";
        } else {
            if (hours > 0) {
                return hours + "h trước";
            } else {
                return mins + "' trước";
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
        return "Hôm nay";
    }
}

Như trên, là một số cách mà mình đã áp dụng để xử lý các dữ liệu liên quan đến JSON và DateTime trong ANdroid. Hy vọng nó hữu ích với bạn.

Chúc bạn vui!

LEAVE A REPLY

Please enter your comment!
Please enter your name here