Java 将从日期时间选择器对话框中获取的日期增加39周

Java 将从日期时间选择器对话框中获取的日期增加39周,java,android,eclipse,Java,Android,Eclipse,嘿,伙计们,我正在开发一个可以用来预测婴儿出生日期的应用程序,但是我没有弄清楚如何从下面的日期时间选择器对话框中增加日期是我的代码 public class Dday extends Activity implements OnClickListener{ private EditText fromDateEtxt; private DatePickerDialog fromDatePickerDialog; private SimpleDateFormat dateFormatter;

嘿,伙计们,我正在开发一个可以用来预测婴儿出生日期的应用程序,但是我没有弄清楚如何从下面的日期时间选择器对话框中增加日期是我的代码

public class Dday extends Activity implements OnClickListener{

private EditText fromDateEtxt;

private DatePickerDialog fromDatePickerDialog;

private SimpleDateFormat dateFormatter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dday);

    dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);

    findViewsById();

    setDateTimeField();
}

private void findViewsById() {
    fromDateEtxt = (EditText) findViewById(R.id.etxt_fromdate);    
    fromDateEtxt.setInputType(InputType.TYPE_NULL);
    fromDateEtxt.requestFocus();
}

private void setDateTimeField() {
    fromDateEtxt.setOnClickListener(this);

    Calendar newCalendar = Calendar.getInstance();
    fromDatePickerDialog = new DatePickerDialog(this, new OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            Calendar newDate = Calendar.getInstance();
            newDate.set(year, monthOfYear, dayOfMonth);
            fromDateEtxt.setText(dateFormatter.format(newDate.getTime()));
        }

    },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.dday, menu);
    return true;
}

public void showDate (View view)
{
    // Adding the days to the date 

    // Button action

    Intent dts = new Intent(this,Details.class);

    startActivity(dts);
}

@Override
public void onClick(View view) {
    // TODO Auto-generated method stub

    if(view == fromDateEtxt) {
        fromDatePickerDialog.show();
    }
}

您可以使用以下方法将日历对象增加39周:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.WEEK_OF_YEAR, 39);

有关详细信息,请参见此线程

您可以使用Calendar对象,通过基于日历和修改后的日历设置日期对象,使用Calendar类创建从今天开始的日期,并添加39周,如下所示:

    // Formatter for readable comparison
    DateFormat sdf = new SimpleDateFormat("MM dd yyyy", Locale.getDefault());

    // Today
    Calendar now = Calendar.getInstance();
    Date dateToday = new Date();
    dateToday.setTime(now.getTimeInMillis());

    // 39 weeks from today
    Date futureDate = new Date();
    // Calendar supports roll over with year so no need to worry about modifying year separate
    now.add(Calendar.WEEK_OF_YEAR, 39); 
    futureDate.setTime(now.getTimeInMillis());

    // Print out for comparison
    System.out.println(sdf.format(dateToday));
    System.out.println(sdf.format(futureDate));
打印出:

I/System.out﹕ 09 16 2015 <-- Today
I/System.out﹕ 06 15 2016 <-- 39 weeks later

I/System.out﹕ 09 16 2015嘿,只是一个简单的例子上面的代码如果我只是把它添加到我的代码中,它会正常工作吗?直接进入这个公共的void showDate(视图){//将日期添加到日期//按钮action Intent dts=new Intent(this,Details.class);startActivity(dts);}可以工作吗?是的,可以在showDate方法中更新日期。但对于他来说,你必须在日历中保留用户选择日期的参考。太棒了!非常感谢您,您介意帮我检查一下我的示例应用程序是否满足基本要求,并在发现循环漏洞的地方进行修补吗?
I/System.out﹕ 09 16 2015 <-- Today
I/System.out﹕ 06 15 2016 <-- 39 weeks later