2017-03-06 183 views
0

我是新手android開發人員。如何從日期選擇器(日曆視圖)更改日期格式

現在,我嘗試將日期格式從m/d/yyyy更改爲mmddyyyy。

這是參考鏈接:http://www.thaicreate.com/mobile/android-calendarview.html

希望能有人幫我。

對不起,我的英語語言不好。

myCalendarView.java

package com.myapp; 
 

 
import android.os.Bundle; 
 
import android.app.Activity; 
 
import android.widget.CalendarView; 
 
import android.content.Intent; 
 

 
public class myCalendarView extends Activity { 
 
\t 
 
    private int mYear; 
 
    private int mMonth; 
 
    private int mDay; 
 

 

 
    @Override 
 
    public void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     CalendarView calendar = new CalendarView(this); 
 
     calendar.setOnDateChangeListener(mDateSetListener); 
 
     setContentView(calendar); 
 

 
    } 
 

 
    // the callback received when the user "sets" the date in the dialog 
 
    private CalendarView.OnDateChangeListener mDateSetListener = 
 
     new CalendarView.OnDateChangeListener() { 
 

 
     public void onSelectedDayChange(CalendarView view, int year, 
 
       int monthOfYear, int dayOfMonth) { 
 
      mYear = year; 
 
      mMonth = monthOfYear; 
 
      mDay = dayOfMonth; 
 
      String selectedDate = new StringBuilder().append(mMonth + 1).append("-").append(mDay).append("-") 
 
      .append(mYear).append(" ").toString(); 
 

 
      Bundle b = new Bundle(); 
 
      b.putString("dateSelected", selectedDate); 
 

 
      //Add the set of extended data to the intent and start it 
 
      Intent intent = new Intent(); 
 
      intent.putExtras(b); 
 
      setResult(RESULT_OK,intent);  
 
      finish(); 
 
     } 
 
    }; 
 

 
}

MainActivity.java

package com.myapp; 
 

 
import android.os.Bundle; 
 
import android.app.Activity; 
 
import android.view.Menu; 
 
import android.widget.Button; 
 
import android.widget.EditText; 
 
import android.view.View; 
 
import java.util.Calendar; 
 
import android.content.Intent; 
 

 
public class MainActivity extends Activity { 
 
\t 
 
    private EditText editT1; 
 
    private Button btn1; 
 

 
    private int mYear; 
 
    private int mMonth; 
 
    private int mDay; 
 

 
    static final int CALENDAR_VIEW_ID = 1; 
 
\t 
 
    @Override 
 
    public void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 
     
 
     
 
     // editText1 
 
     editT1 = (EditText) findViewById(R.id.editText1); 
 
     
 
     // button1 
 
     btn1 = (Button) findViewById(R.id.button1); 
 

 
     // add a click listener to the button 
 
     btn1.setOnClickListener(new View.OnClickListener() { 
 
      public void onClick(View v) { 
 
       Intent intent = new Intent(MainActivity.this, myCalendarView.class); 
 
       startActivityForResult(intent,CALENDAR_VIEW_ID); 
 
      } 
 
     }); 
 
     
 
     // get the current date 
 
     final Calendar c = Calendar.getInstance(); 
 
     mYear = c.get(Calendar.YEAR); 
 
     mMonth = c.get(Calendar.MONTH); 
 
     mDay = c.get(Calendar.DAY_OF_MONTH); 
 

 
     // display the current date 
 
     updateCurrentDate(); 
 
\t \t 
 
    } 
 

 
    // updates the date we display in the TextView 
 
    private void updateCurrentDate() { 
 
    \t editT1.setText(
 
      new StringBuilder() 
 
        // Month is 0 based so add 1 
 
        .append(mMonth + 1).append("-") 
 
        .append(mDay).append("-") 
 
        .append(mYear).append(" ")); 
 
    } 
 
    
 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
 
    { 
 
     switch(requestCode) { 
 
     case CALENDAR_VIEW_ID: 
 
      if (resultCode == RESULT_OK) { 
 

 
       Bundle bundle = data.getExtras(); 
 
       editT1.setText(bundle.getString("dateSelected")); 
 
       break; 
 
      } 
 
     } 
 

 
    } 
 
    
 
    @Override 
 
    public boolean onCreateOptionsMenu(Menu menu) { 
 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
 
     return true; 
 
    } 
 
    
 
}

+0

請指定你想改變日期格式。我在這裏沒有看到任何「m/d/yyyy」。 –

+0

@Boonya Kitpitak我在日曆上挑選日期後。它會顯示在2017年3月1日的結果中。但我想展示像03/01/2017。 –

回答

0

用戶......根據你的日期格式..

public static String parsePickerDate(int Year, int Month, int day) { 

    String sYear = String.valueOf(Year); 
    String sMonth = String.valueOf((Month + 1)); 
    String sDay = String.valueOf(day); 

    if (sDay.length() == 1) 
     sDay = "0" + sDay; 

    if (sMonth.length() == 1) 
     sMonth = "0" + sMonth; 

    if (sDay.length() == 1) 
     sDay = "0" + sDay; 

    return sYear + "-" + sMonth + "-" + sDay; 
} 
+1

這對我來說很有用。謝謝你兄弟。 –

0

您可以像轉換爲

DateFormat formatter = new SimpleDateFormat("MM/dd/yy"); 
Date date = (Date)formatter.parse("5/1/12"); 

formatter = new SimpleDateFormat("MM/dd/yyyy"); 
date = (Date)formatter.format(date); 

,如果你想改變它的日期選擇器,那麼你可以使用這個

@Override 
public void onDateSet(DatePicker view, int year, int monthOfYear, 
    int dayOfMonth) { 

int month = monthOfYear + 1; 
String formattedMonth = "" + month; 
String formattedDayOfMonth = "" + dayOfMonth; 

if(month < 10){ 

    formattedMonth = "0" + month; 
} 
if(dayOfMonth < 10){ 

    formattedDayOfMonth = "0" + dayOfMonth; 
} 
searchText.setText(formattedDayOfMonth + "/" + formattedMonth + "/" + year); 
} 
+0

我正在嘗試這個解決方案。但這對我來說不合適。 因爲,結果日期格式像這樣1/1/2017。但我想轉換爲01/01/2017 –

0
try { 
    SimpleDateFormat inputDate = new SimpleDateFormat("d/M/yyyy", Locale.US); 
    SimpleDateFormat outputDate = new SimpleDateFormat("MMddyyyy", Locale.US); 

    String date = outputDate.format(inputDate.parse("5/2/1993")); 


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