Как конвертировать несколько значений EditText в одну строку даты в android студии? - PullRequest
0 голосов
/ 11 февраля 2020

это проект калькулятора возраста. Мне нужно знать, как преобразовать несколько значений EditText в одну строку даты в студии android? имейте в виду, я использую "библиотеку времени", это не показывает результат. Я не знаю, где я сделал ошибку! Я забыл все, что не могу исправить сейчас, надеюсь, вы, ребята, можете помочь мне с этим. спасибо

public void dateOfBirth(){

    String day = editTextDay.getText().toString().trim();
    String month = editTextMonth.getText().toString().trim();
    String year = editTextYear.getText().toString().trim();

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
    String sDate = day+"/"+month+"/"+year;

    long date = System.currentTimeMillis();
    String eDate = simpleDateFormat.format(date);



    try {
       Date date1 = simpleDateFormat.parse(sDate);
       Date date2 =simpleDateFormat.parse(eDate);
        /* long eDate = System.currentTimeMillis();
        Date date2 = simpleDateFormat.parse(String.valueOf((eDate)));*/

        long startDate = date1.getTime();
        long endDate =date2.getTime();

        if (startDate<=endDate){

           Period period = new Period(startDate, endDate, PeriodType.yearMonthDay());
           int years = period.getYears();
           int months =period.getMonths();
           int days = period.getDays();

            textViewDay.setText(days);
            textViewMonth.setText(months);
            textViewYear.setText(years);

        }


    } catch (ParseException e) {
        e.printStackTrace();
    }



}

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Go олл-ин в Joda-Time

    String day = "11";
    String month = "4";
    String year = "2012";

    String sDate = "" + year + '-' + month + '-' + day;
    LocalDate dob = new LocalDate(sDate);

    LocalDate today = new LocalDate();

    if (dob.isBefore(today)) {
        Period period = new Period(dob, today, PeriodType.yearMonthDay());
        int years = period.getYears();
        int months = period.getMonths();
        int days = period.getDays();

        System.out.println("" + years + " years " + months + " months " + days + " days");
    }

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

7 лет 10 месяцев 0 дней

Поскольку вас интересуют годы, месяцы и дни, вам не нужны DateTime объекты (хотя они будут работать). Они включают в себя время суток тоже. Просто используйте LocalDate.

Классы SimpleDateFormat и Date плохо спроектированы и давно устарели, первые особенно печально неприятны. Я рекомендую вам держаться подальше от них, а также от представления момента времени как long отсчета миллисекунд с начала эпохи. Хороший выбор:

  1. Оставайтесь с Joda-Time, поскольку вы уже используете Joda-Time.
  2. Мигрируйте до java .time, современных Java даты и времени API.
0 голосов
/ 11 февраля 2020

вот как я решаю свою проблему -

String day = editTextDay.getText().toString().trim();
    String month = editTextMonth.getText().toString().trim();
    String year = editTextYear.getText().toString().trim();

  //  SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");


    String BirthDate ="" + year + '-' + month + '-' + day;
    LocalDate sDate = new LocalDate(BirthDate);
    LocalDate today = new LocalDate();

    Period period = new Period(sDate, today, PeriodType.yearMonthDay());
    int years = period.getYears();
    int months =period.getMonths();
    int days = period.getDays();

    textViewDay.setText(""+days);
    textViewMonth.setText(""+months);
    textViewYear.setText(""+years);
...