如何在 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
.
类 SimpleDateFormat
和 Date
设计不佳且早已过时,尤其是前者是出了名的麻烦。我建议您远离这些,也不要将时间点表示为自纪元以来的 long
毫秒数。好的选择是:
- 继续使用 Joda-Time,因为您已经在使用 Joda-Time。
- 迁移到 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);
这是一个年龄计算器项目 我需要知道如何在 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
.
类 SimpleDateFormat
和 Date
设计不佳且早已过时,尤其是前者是出了名的麻烦。我建议您远离这些,也不要将时间点表示为自纪元以来的 long
毫秒数。好的选择是:
- 继续使用 Joda-Time,因为您已经在使用 Joda-Time。
- 迁移到 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);