>它是一个年龄计算器项目 我需要知道如何将多个 EditText 值转换为一个日期 安卓工作室中的字符串? 请记住,我正在使用"乔达时间图书馆",它没有显示结果。我不知道我在哪里做错了!我已经忘记了我现在无法修复的一切,希望你们能帮助我。谢谢
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 年 10 个月 0 天
由于您对年,月和日感兴趣,因此不需要DateTime
对象(尽管它们可以工作(。它们也包括一天中的时间。只需使用LocalDate
.
SimpleDateFormat
和Date
的课程设计不佳且早已过时,前者尤其臭名昭著地麻烦。我建议你远离这些,也不要将时间点表示为自纪元以来的毫秒数long
。不错的选择是:
- ,因为你已经在使用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);