Java 从SimpleDataFormat到SimpleDataFormat解析并格式化日期选择器日期

Java 从SimpleDataFormat到SimpleDataFormat解析并格式化日期选择器日期,java,android,simpledateformat,Java,Android,Simpledateformat,我正在尝试将DatePicker日期格式化为SimpleDateFormat(“yyyy-MM-dd HH:MM:ss Z”)。有人告诉我,我需要使用SimpleDataFormatter将其解析为最新对象SimpleDataFormat(“yyyy-MM-dd”),然后将其格式化为我需要的格式,如下所示。但是,我在try-catch块中得到了一个错误“replicate local variable eDate”。请任何专家审查我的代码并提出建议 更新 @Override protec

我正在尝试将DatePicker日期格式化为SimpleDateFormat(“yyyy-MM-dd HH:MM:ss Z”)。有人告诉我,我需要使用SimpleDataFormatter将其解析为最新对象SimpleDataFormat(“yyyy-MM-dd”),然后将其格式化为我需要的格式,如下所示。但是,我在try-catch块中得到了一个错误“replicate local variable eDate”。请任何专家审查我的代码并提出建议

更新

@Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case EDATE_DIALOG_ID:
            return new DatePickerDialog(this, 
            sDateSetListener, mYear, mMonth, mDay);        
        }
        return null;
    }

    private DatePickerDialog.OnDateSetListener sDateSetListener =
        new DatePickerDialog.OnDateSetListener() {
            public void onDateSet(DatePicker view, 
            int year, int monthOfYear, int dayOfMonth) {

                mYear = year;
                mMonth = monthOfYear;
                mDay = dayOfMonth;                                
                updateDate();
            }
    };

    private void updateDate() {
        inputEdate.setText(
            new StringBuilder()                
                .append(mMonth + 1).append("-")
                .append(mDay).append("-")
                .append(mYear).append(" "));                
    }


    class CreateNewRequest extends AsyncTask<String, String, String> {

        protected String doInBackground(String... args) {

            Calendar c = Calendar.getInstance();

            SimpleDateFormat firstDateFormat = 
            new SimpleDateFormat("yyyy-MM-dd");

            SimpleDateFormat secondDateFormat = 
            new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");

            String eDate = inputEdate.getText().toString();             

            try{

                Date date = firstDateFormat.parse(eDate);
                String eDate = secondDateFormat.format(date);

                }catch(ParseException e) {
                e.printStackTrace();
                }

            String submitDate = secondDateFormat.format(c.getTime());

            List<NameValuePair> params = new ArrayList<NameValuePair>();            

            params.add(new BasicNameValuePair("submitDate", submitDate));
            params.add(new BasicNameValuePair("request_date", eDate));

            }
@覆盖
受保护的对话框onCreateDialog(int id){
开关(id){
案例数据对话框ID:
返回新的DatePickerDialog(此,
SDATestListener,mYear,Ammonth,mDay);
}
返回null;
}
专用DatePickerDialog.OnDateSetListener sDateSetListener=
新建DatePickerDialog.OnDateSetListener(){
公共无效onDateSet(日期选择器视图,
整数年,整数月,整数月){
迈耶=年;
Ammonth=蒙托夫年;
mDay=月的第几天;
updateDate();
}
};
私有void updateDate(){
inputte.setText(
新的StringBuilder()
.append(mm+1)。append(“-”)
.append(mDay)。append(“-”)
.append(mYear)。append(“”);
}
类CreateNewRequest扩展了AsyncTask{
受保护的字符串doInBackground(字符串…args){
Calendar c=Calendar.getInstance();
SimpleDataFormat firstDateFormat=
新的简化格式(“yyyy-MM-dd”);
SimpleDateFormat secondDateFormat=
新的简化格式(“yyyy-MM-dd HH:MM:ss Z”);
字符串eDate=Inputute.getText().toString();
试一试{
Date-Date=firstDateFormat.parse(eDate);
字符串eDate=secondDateFormat.format(日期);
}捕获(解析异常){
e、 printStackTrace();
}
字符串submitDate=secondDateFormat.format(c.getTime());
List params=new ArrayList();
添加参数(新的BasicNameValuePair(“submitDate”,submitDate));
添加参数(新的BasicNameValuePair(“请求日期”,eDate));
}

您需要复制变量
eDate
的声明。如果您想要覆盖该值,只需删除类型声明
字符串即可,如下所示:

eDate = df.format(date);
编辑:

我想你想要的是:

class CreateNewRequest extends AsyncTask<String, String, String> {
    protected String doInBackground(String... args) {
        Calendar c = Calendar.getInstance();
        SimpleDateFormat firstDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat secondDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");

        String eDate = inputEdate.getText().toString();             

        try {
            Date date = firstDateFormat.parse(eDate);
            eDate = secondDateFormat.format(date);
            submitDate = secondDateFormat.format(c.getTime());
        } catch(ParseException e) {
            e.printStackTrace();
        }
        List<NameValuePair> params = new ArrayList<NameValuePair>();            
        params.add(new BasicNameValuePair("submitDate", submitDate));
        params.add(new BasicNameValuePair("request_date", eDate));
    }
}
类CreateNewRequest扩展了AsyncTask{
受保护的字符串doInBackground(字符串…args){
Calendar c=Calendar.getInstance();
SimpleDateFormat firstDateFormat=新的SimpleDateFormat(“yyyy-MM-dd”);
SimpleDateFormat secondDateFormat=新的SimpleDateFormat(“yyyy-MM-dd HH:MM:ss Z”);
字符串eDate=Inputute.getText().toString();
试一试{
Date-Date=firstDateFormat.parse(eDate);
eDate=secondDateFormat.format(日期);
submitDate=secondDateFormat.format(c.getTime());
}捕获(解析异常){
e、 printStackTrace();
}
List params=new ArrayList();
添加参数(新的BasicNameValuePair(“submitDate”,submitDate));
添加参数(新的BasicNameValuePair(“请求日期”,eDate));
}
}

您的问题实际上与您试图实现的目标无关。编译器给了您一条非常清晰的错误消息-是什么让您对该错误感到困惑?