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

下面是我当前的代码,当DatePickerDialog获得焦点时会显示EditText。问题是由于NullPointerException返回空值而发生的DateFormat

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

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();
        }
    }
}

最佳答案

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

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


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


DateFormat.getDateInstance():仅输出日期
DateFormat.getDateTimeInstance():输出日期和时间
DateFormat.getTimeInstance():仅输出时间


但是除此之外,您无需执行任何操作。 DateFormat负责所有内容并正确格式化Date

您可以找到有关DateFormat in the documentation的更多信息。

希望我能为您提供帮助,如果您还有其他疑问,请随时提出。

关于android - DatePicker将日期格式化为系统区域设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24826500/

10-13 04:30