我正在尝试根据系统区域设置格式化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/