DatePicker格式日期作为系统区域设置

时间:2014-07-18 13:43:45

标签: android datepicker

我正在尝试根据系统区域设置格式化Date。我知道我可以使用DateFormat,但我似乎无法正确使用它!我也试过了SimpleDateFormat,但它并不尊重语言环境,最重要的是它已被弃用!

以下是我当前的代码,当DatePickerDialog获得焦点时会显示EditText。问题是出现NullPointerException,因为DateFormat返回null!

我做错了什么?有人可以帮帮我吗?

public void onFocusChange(View v, boolean hasFocus) {

    if (v == txtDate) {
        if (hasFocus == true) {

            // Process to get Current Date
            final Calendar c = Calendar.getInstance();
            mYear = c.get(Calendar.YEAR);
            mMonth = c.get(Calendar.MONTH);
            mDay = c.get(Calendar.DAY_OF_MONTH);

            // Launch Date Picker Dialog
            DatePickerDialog dpd = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    // Display Selected date in edit text
                    String selectedDate = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year;
                    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
                    Date date = null;
                    try {
                        date = sdf.parse(selectedDate);
                    } catch (ParseException e) {
                        // handle exception here !
                    }

                    java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(activityname.this);
                    String s = dateFormat.format(date);
                    txtDate.setText(s);
                }
            }, mYear, mMonth, mDay);
            dpd.show();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用DateFormat根据当前区域设置格式化Date

Date date = new Date();
DateFormat format =  DateFormat.getDateInstance();
String formatted = format.format(date);

根据您使用的DateFormat实例,Date的格式有不同的格式:

  1. DateFormat.getDateInstance():仅输出日期
  2. DateFormat.getDateTimeInstance():输出日期和时间
  3. DateFormat.getTimeInstance():仅输出时间
  4. 但除此之外,你不需要做任何事情。 DateFormat负责处理所有内容并正确格式化Date

    您可以找到有关DateFormat in the documentation

    的更多信息

    我希望我可以帮到你,如果你有任何其他问题,请随时提出。