我正在尝试根据系统区域设置格式化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();
}
}
}
答案 0 :(得分:1)
您可以使用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。
我希望我可以帮到你,如果你有任何其他问题,请随时提出。