0

它是一个年龄计算器项目我需要知道如何在 android studio 中将多个 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();
    }



}
4

2 回答 2

1

在 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.

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

  1. 因为您已经在使用 Joda-Time,所以请继续使用 Joda-Time。
  2. 迁移到现代 Java 日期和时间 API java.time。
于 2020-02-11T19:12:52.733 回答
0

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

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);
于 2020-02-11T20:52:36.410 回答