Как преобразовать дату db2 в YYYMMDD в android - PullRequest
1 голос
/ 05 августа 2020

Я получаю дату db2 как 1200703 на мобильный телефон в качестве ответа. Мне нужно преобразовать эту дату в читаемый формат как ГГГГММДД. Как это сделать со стороны android?

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

Это не формат даты в db2, а способ хранения даты в некоторых системах. Это так называемый целочисленный формат CYYMMDD.

YEAR = 1900 + 100 *C + YY МЕСЯЦ = ММ ДЕНЬ = ДД

1 голос
/ 05 августа 2020

Строка даты 1200703 в формате CYYMMDD. Этот формат (я не уверен, используется ли он до сих пор, поскольку в последний раз, когда я использовал DB2 в 2008 году) использовался DB2.

Чтобы вычислить год, вам необходимо использовать следующий формула:

Year = 100 * C + 1900 + YY например, для CYY = 120, значение year = 100 * 1 + 1900 + 20 = 2020.

После преобразования части CYY в формат yyyy вы можете использовать дату и время API форматирования, как показано ниже:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class Main {
    public static void main(String args[]) {
        // Given date string
        String dateStr = "1200703";

        // Convert the given date string into yyyyMMdd format
        int c = Integer.parseInt(dateStr.substring(0, 1));
        int yy = Integer.parseInt(dateStr.substring(1, 3));
        int year = 100 * c + 1900 + yy;
        String dateStrConverted = String.valueOf(year) + dateStr.substring(3);

        // ########## For Java 8 onwards ##############

        // Define a formatter
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd");
        LocalDate localDate = LocalDate.parse(dateStrConverted, dtf);
        System.out.println("Default format: " + localDate);

        // Printing the date in a sample custom format
        DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("EEE MMM dd yyyy");
        String strDate1 = dtf1.format(localDate);
        System.out.println(strDate1);

        // ############################################

        // ############## Before Java 8 ###############

        // Define a formatter
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        Date utilDate = null;
        try {
            utilDate = sdf.parse(dateStrConverted);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println("Default format: " + utilDate);

        // Printing the date in a sample custom format
        SimpleDateFormat sdf1 = new SimpleDateFormat("EEE MMM dd yyyy");
        String strDate2 = sdf1.format(utilDate);
        System.out.println(strDate2);

        // ############################################
    }
}

Вывод:

Default format: 2020-07-03
Fri Jul 03 2020
Default format: Fri Jul 03 00:00:00 BST 2020
Fri Jul 03 2020

Примечание: Я рекомендую использовать современную дату -время API . Если версия Android, которую вы используете, несовместима с Java -8, я предлагаю вам выполнить обратный перенос с помощью библиотеки ThreeTen-Backport . Однако, если вы хотите использовать устаревший API, вы можете использовать его, как показано в ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...