如何从日历中获取日期

时间:2017-12-28 12:59:50

标签: java android android-studio calendar

我有另一个课程,在textview中显示日历到用户和设置日期。但是如何获取日期(从这里开始的年份?用于计算一般用户的年份)。

这是我正在使用的代码。这是:DELETE,它在文本视图中显示用户和设置日期的日历。我不知道为此代码设置此日期:TextViewDatePicker editTextDatePicker = new TextViewDatePicker implement class

Calendar dateOfYourBirth = new GregorianCalendar();

这是显示用户日历的类:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.profile_fragment);
    editTextForAge = (TextView)  findViewById(R.id.ed_calendar);
    Window window = this.getWindow();

      TextViewDatePicker editTextDatePicker = new TextViewDatePicker(ProfileGeneral.this, editTextForAge);

    Calendar dateOfYourBirth = new GregorianCalendar();

   Calendar today = Calendar.getInstance();
   int yourAge = today.get(Calendar.YEAR) - dateOfYourBirth.get(Calendar.YEAR);
   dateOfYourBirth.add(Calendar.YEAR, yourAge);
   if (today.before(dateOfYourBirth)) {
      yourAge--;
   }

2 个答案:

答案 0 :(得分:1)

使用java.time(现代Java日期和时间API)可以轻松实现这一点。

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    // date picker month is 0-based, so add 1 to it
    LocalDate datePickerDate = LocalDate.of(year, monthOfYear + 1, dayOfMonth);
    mView.setText(datePickerDate.toString());

    LocalDate today = LocalDate.now(ZoneId.of("America/Tortola"));
    long yourAge = ChronoUnit.YEARS.between(datePickerDate, today);
}

你可以在Android上使用它吗?当然!对于大多数Android设备,您需要获得ThreeTenABP,从Java 8到Android Java 7的java.time的后端。this question: How to use ThreeTenABP in Android ProjectJSR-310为3Ten,其中有很好的解释,其中首先描述java.time,然后安装Android Backport的ABP。

如果不是美国/托尔托拉,请替换您想要的时区。

答案 1 :(得分:0)

您对TextViewDatePicker使用了错误的构造函数

更新代码:

TextViewDatePicker editTextDatePicker = new TextViewDatePicker(ProfileGeneral.this, editTextForAge);

TextViewDatePicker editTextDatePicker = new TextViewDatePicker(ProfileGeneral.this, editTextForAge,0,0);