Как изменить строку даты в формате json и отформатировать ее так, чтобы отображался только день без даты, года, месяца или времени - PullRequest
0 голосов
/ 06 июля 2019

У меня есть JSONObject и ArrayList, откуда я получаю данные, строка даты данных, которую я получаю, это гггг / мм / дд 00:00:00, я хочу показать только день месяца 1-31, какя отформатирую эту строку, чтобы показать только день?

Я пытался использовать SimpleDateFormat, но безуспешно, может быть, так как я делаю это внутри цикла for?

public void onResponse(String response) {

                        try {
                            //getting the whole json object from the response
                            JSONObject obj = new JSONObject(response);

                            ArrayList<ListModel> ListModelArrayList = new ArrayList<>();
                            JSONArray dataArray = obj.getJSONArray("events");

                            for (int i = 0; i < dataArray.length(); i++) {

                                ListModel List = new ListModel();
                                JSONObject dataobj = dataArray.getJSONObject(i);

                                List.setId(dataobj.getString("id"));
                                List.setInit_date(dataobj.getString("init_date"));
                                List.setEnd_date(dataobj.getString("end_date"));
                                List.setTitle(dataobj.getString("title"));
                                List.setDescription(dataobj.getString("description"));
                                List.setColor_code(dataobj.getString("color_code"));
                                List.setAll_day(dataobj.getString("all_day"));

                                ListModelArrayList.add(List);
                            }

                            for (int j = 0; j < ListModelArrayList.size(); j++) {

                                textViewDate.setText(textViewDate.getText() +
                                        ListModelArrayList.get(j).getInit_Date() + "\n");


                                textViewEvent.setText(textViewEvent.getText() +
                                        ListModelArrayList.get(j).getTitle() + "\n");

                            }

сейчас я получаю этот формат 2019-05-17 00:00:00, я хочу отображать только 17

1 Ответ

0 голосов
/ 06 июля 2019

Вы можете изменить SimpleDateFormat, как вы предложили, и вместо того, чтобы помещать дату непосредственно в цикл for, здесь:

textViewDate.setText(textViewDate.getText() +
                                    ListModelArrayList.get(j).getInit_Date() + "\n");

Внутри цикла вы будете делать следующее:

String s = ListModelArrayList.get(j).getInit_Date();
    SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
    Date date = null;
    try {
        date = fmt.parse(s);
        SimpleDateFormat fmtOut = new SimpleDateFormat("dd", Locale.ENGLISH);

        textViewDate.setText(textViewDate.getText() +
                fmtOut.format(date) + "\n");
    } catch (ParseException e) {
        textViewDate.setText(textViewDate.getText() + "\n");
        e.printStackTrace();
    }

Что позволяет вам форматировать дату в соответствии с шаблоном, который вы хотите в этой строке:

 SimpleDateFormat fmtOut = new SimpleDateFormat("dd", Locale.ENGLISH);

ссылки на шаблоны Документация Oracle Шаблоны SimpleDateFormat

...