月份名称出现在android中的datePicker对话框中的M +编号

Suj*_*jay 12 android android-datepicker datepickerdialog

我试图在datePicker对话框中以类似的格式显示日期Sep|29|2016.你可以在下面的图像中看到.

预期产出

在此输入图像描述

不幸的是,大部分时间我28|M09|2016很少得到我的预期输出.你可以在下面的图像中看到

电流输出

在此输入图像描述

我试过以下代码

public Dialog onCreateDialog(Bundle savedInstanceState) {
    Calendar calendar = Calendar.getInstance();

    System.out.println(calendar.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.US));    

    calendar.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.US);
    int yy = calendar.get(Calendar.YEAR);
    int mm = calendar.get(Calendar.MONTH);   
    int dd = calendar.get(Calendar.DAY_OF_MONTH);      

    System.out.println("yearr==="+yy);
    System.out.println("monthh==="+mm);
    System.out.println("dayy==="+dd);



    DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
             this,yy,mm,dd);
    return datepickerdialog;
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的期待.

you*_*ung 5

你期待这个吗?

    Button selectDate = (Button) findViewById(R.id.idButton);
    selectDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Calendar currentDate = Calendar.getInstance(Locale.ENGLISH);
            int mYear = currentDate.get(Calendar.YEAR);
            int mMonth = currentDate.get(Calendar.MONTH);
            int mDay = currentDate.get(Calendar.DAY_OF_MONTH);

            DatePickerDialog mDatePicker = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
                public void onDateSet(DatePicker view, int selectedyear, int selectedmonth, int selectedday) {

                    GregorianCalendar gc = new GregorianCalendar();
                    gc.setFirstDayOfWeek(Calendar.MONDAY);
                    gc.set(Calendar.MONTH, view.getMonth());
                    gc.set(Calendar.DAY_OF_MONTH, view.getDayOfMonth());
                    gc.set(Calendar.YEAR, view.getYear());

                    DecimalFormat mFormat = new DecimalFormat("00");
                    String selectedDate = String.format("%s/%S/%s", gc.get(Calendar.YEAR),
                            mFormat.format(gc.get(Calendar.MONTH) + 1),
                            mFormat.format(gc.get(Calendar.DATE)));

                }
            }, mYear, mMonth, mDay);
            mDatePicker.setTitle("Select Date");
            mDatePicker.show();
        }
    });  
Run Code Online (Sandbox Code Playgroud)

输出


Jay*_* RJ 2

可能是由于 引起的问题Locale

locale之前设置电流dialog。删除Locale.US这就是问题发生的地方。

Locale locale = getResources().getConfiguration().locale;
Locale.setDefault(locale);
Run Code Online (Sandbox Code Playgroud)

将其设置为localedialog

然后把你的dialog东西放上去。

Android N(API 级别 24)更新(无警告):

@TargetApi(Build.VERSION_CODES.N)
public Locale getCurrentLocale(){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
        return getResources().getConfiguration().getLocales().get(0);
    } else{
        //noinspection deprecation
        return getResources().getConfiguration().locale;
    }
}
Run Code Online (Sandbox Code Playgroud)