Как получить значение дня от даты и показать его в TextView? - PullRequest
0 голосов
/ 26 октября 2018

Я получаю значение даты из API как «date_display»: «13/03/2018». Теперь, как отобразить дату как 13 марта 2018 года и как получить значение дня для этой даты и показать его в TextView?

protected void onPostExecute(String result) {

        super.onPostExecute(result);
        //text.setText(result);
        try {

            JSONObject obj = new JSONObject(result);

            JSONArray airlinesArray = obj.getJSONArray("data");
            for(int i = 0; i < airlinesArray.length(); i++){
                JSONObject object = airlinesArray.getJSONObject(i);

                String id=object.getString("id");
                String rt=object.getString("route_type");
                String flightname=object.getString("flight_name");
                String fno=object.getString("flight_no");
                String dd=object.getString("date_display");
 HashMap<String, String> airliner = new HashMap<>();

                airliner.put("id",id);
                airliner.put("route_type",rt);
                airliner.put("flight_name",flightname);
                airliner.put("flight_no",fno);
                airliner.put("date_display",dd);
ListAdapter adapter = new SimpleAdapter(
                MainActivity.this, airlines,
                R.layout.details, new String[]{"flight_name", "flight_no",
                "date_display","time_display","display_route"}, new int[]{R.id.flightname,
                R.id.flightnum, R.id.date,R.id.time,R.id.route});

        lv.setAdapter(adapter);

Ответы [ 7 ]

0 голосов
/ 26 октября 2018

попробуйте это

, используя этот метод, вы можете конвертировать любой формат даты в другие

 String fromFormat="dd/MM/yyyy";
    String toFormat ="dd MMM yyyy";
    String date = "13/03/2018";

    public static String convertStringDate(String date, String fromFormat, String toFormat) {
        SimpleDateFormat df = new SimpleDateFormat(fromFormat);
        Date d;
        try {
            d = df.parse(date);
            SimpleDateFormat dft = new SimpleDateFormat(toFormat);
            return dft.format(d);
        } catch (java.text.ParseException e) {
        }

        return null;
    }

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

Форматы даты

0 голосов
/ 26 октября 2018

С LocalDate и DateTimeFormatter:

    String d = "\"date_display\":\"13/03/2018\"";

    d = d.replaceAll("\"", "").replaceAll("date_display:", "");

    LocalDate date = LocalDate.parse(d, DateTimeFormatter.ofPattern("dd/MM/yyyy"));
    String newDate = date.format(DateTimeFormatter.ofPattern("dd MMM yyyy")).toUpperCase();

    System.out.println(newDate);

печать

13 MAR 2018

и только день, чтобы положить в TextView:

String day = String.valueOf(date.getDayOfMonth());
textview.setText(day);
0 голосов
/ 26 октября 2018

Во-первых, я не знаю, управляете ли вы бэкэндом, но вы должны посылать время в миллисекундах вместо даты. Таким образом, пользовательский интерфейс может форматировать время любым удобным для него способом.

Во-вторых, чтобы ответить на ваш вопрос, вам нужно проанализировать дату, указанную сервером. Вы получаете строку, поэтому вам нужно преобразовать ее в объект Date. Вы можете достичь этого, используя SimpleDateFormat :

DateFormat format = new SimpleDateFormat("dd/MM/yyyy ", Locale.getDefault());

try {
    Date date = format.parse(date);
    String day = (String) DateFormat.format("dd", date); // 20

} catch (ParseException e) {
    Logger.get().e(TAG, "getExpirationDate", "ParseException = " + e.getMessage());
}

Надеюсь, это поможет.

0 голосов
/ 26 октября 2018

Вы можете использовать SimpleDateFormat класс для разбора и изменения форматов даты.

String dd=object.getString("date_display");

// Add these two lines
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dd);
dd = new SimpleDateFormat("dd MMM yyyy").format(date);
0 голосов
/ 26 октября 2018

Используйте приведенный ниже код для конвертации:

SimpleDateFormat inputFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
SimpleDateFormat outputFormat = new SimpleDateFormat("dd MMM yyyy", Locale.getDefault());
Date date;
String result = "";
try {
    date = inputFormat.parse("set your date from API here");
    result = outputFormat.format(date);
} catch (e: ParseException) {
    Log.e("Error", "Parse exception", e);
}
0 голосов
/ 26 октября 2018

Используйте это

long date = System.currentTimeMillis();
SimpleDateFormat dateFormat = new SimpleDateFormat("MMM MM dd, yyyy h:mm a");
String dateString = dateFormat.format(date);
view.setText(dateString);

, вы можете получить вот такой вывод

Пт 26 октября 2018 г. 16:55

0 голосов
/ 26 октября 2018

Я думаю, что этот код полезен для нас.

 import android.text.format.DateFormat;

 String dayOfTheWeek = (String) DateFormat.format("EEEE", date); // Thursday
 String day          = (String) DateFormat.format("dd",   date); // 20
 String monthString  = (String) DateFormat.format("MMM",  date); // Jun
 String monthNumber  = (String) DateFormat.format("MM",   date); // 06
 String year         = (String) DateFormat.format("yyyy", date); // 2013
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...