3

我想得到一个“短日期”的模式作为一个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

4

3 回答 3

3

我最终使用

String deviceDateFormat = DateFormat.getBestDateTimePattern(Locale.getDefault(), "E dd MMM");

将为我提供所提供输入格式的“最佳区域表示”,在本例中为工作日、日和月。

于 2013-09-19T12:11:05.627 回答
2

rememberDateFormat是 for 的基类,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();
于 2013-11-20T19:04:49.277 回答
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);
}

那对你有用吗 ?

于 2013-09-17T22:58:40.110 回答