我希望将“短日期”模式设为String
,并根据用户的区域设置进行自定义(例如“E dd MMM”)。我可以使用
轻松获得本地化的DateFormat
- 对象
DateFormat mDateFormat = android.text.format.DateFormat.getDateFormat(mContext);
但是DateFormat
没有.toPattern()
- 方法。
如果我使用
SimpleDateFormat sdf = new SimpleDateFormat();
String mDateFormatString = sdf.toPattern();
我不知道如何只获取短日期模式字符串而不是完整的M/d/yy h:mm a
答案 0 :(得分:2)
我最终使用
String deviceDateFormat = DateFormat.getBestDateTimePattern(Locale.getDefault(), "E dd MMM");
将为我提供所提供输入格式的“最佳区域代表”,在本例中为工作日,日期和月份。
答案 1 :(得分:1)
记住DateFormat
是SimpleDateFormat
的基类,所以你总是可以投射它并抓住模式。
final DateFormat shortDateFormat = android.text.format.DateFormat.getDateFormat(context.getApplicationContext());
// getDateFormat() returns a SimpleDateFormat from which we can extract the pattern
if (shortDateFormat instanceof SimpleDateFormat) {
final String pattern = ((SimpleDateFormat) shortDateFormat).toPattern();
答案 2 :(得分:0)
你可以尝试这样的事情:
public String toLocalHourOrShortDate(String dateString, Context context) {
java.text.DateFormat dateFormat = DateFormat.getDateFormat(context);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
Date date = null;
try {
date = sdf.parse(dateString);
Calendar thisMoment = Calendar.getInstance();
Calendar eventTime = new GregorianCalendar(Locale.getDefault());
eventTime.setTime(date);
if (thisMoment.get(Calendar.YEAR) == eventTime.get(Calendar.YEAR) &&
thisMoment.get(Calendar.MONTH) == eventTime.get(Calendar.MONTH) &&
thisMoment.get(Calendar.DAY_OF_MONTH) == eventTime.get(Calendar.DAY_OF_MONTH)) {
SimpleDateFormat hourDateFormat = new SimpleDateFormat("HH:mm", Locale.getDefault());
return hourDateFormat.format(eventTime.getTime());
}
} catch (ParseException e) {
e.printStackTrace();
}
return dateFormat.format(date);
}
这对你有用吗?