2012-11-21 73 views
1

我想格式化DatePicker日期为SimpleDateFormat(“yyyy-MM-dd HH:mm:ss Z”)。有人告诉我,我需要使用SimpleDateFormatter将它解析为Date对象 - SimpleDateFormat(“yyyy-MM-dd”),然后将其格式化为下面我需要的格式。不过,我在try catch块中出现错误“Duplicate local variable eDate”。任何专家都可以审阅我的代码并提供建议吗?解析和格式DatePicker日期从SimpleDateFormat到SimpleDateFormat

更新

@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)); 

      } 
+0

你的问题实际上与你试图达成的目标没有任何关系。编译器给你一个非常明确的错误信息 - 你对这个错误感到困惑吗? –

回答

3

你一个复制变量eDate的声明。如果你想要的是覆盖值,只是做它通过删除类型声明String这样的:

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)); 
    } 
} 
+0

@nana查看编辑 – Alex

+0

是的,非常感谢你! – user1781367

相关问题