如何在 android studio 中将多个 EditText 值转换为一个日期字符串?

how to convert multiple EditText value into one date String in android studio?

这是一个年龄计算器项目 我需要知道如何在 android 工作室中将多个 EditText 值转换为一个日期字符串?请记住,我使用的是 "joda-time library" 它没有显示结果。我不知道我哪里做错了!我已经忘记了我现在无法解决的所有问题,希望你们能帮助我。谢谢

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();
    }



}

全力投入 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 years 10 months 0 days

由于您对年、月和日感兴趣,因此不需要 DateTime 对象(尽管它们可以工作)。它们也包括一天中的时间。只需使用 LocalDate.

SimpleDateFormatDate 设计不佳且早已过时,尤其是前者是出了名的麻烦。我建议您远离这些,也不要将时间点表示为自纪元以来的 long 毫秒数。好的选择是:

  1. 继续使用 Joda-Time,因为您已经在使用 Joda-Time。
  2. 迁移到 java.time,现代 Java 日期和时间 API。

这就是我解决问题的方法 -

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);