Android:如何使用本地移动的配置和2位数的年份来格式化日期?

tct7dpnv  于 2023-02-10  发布在  Android
关注(0)|答案(3)|浏览(103)

目前,我将日期格式设置为:

DateFormat timeFormat = android.text.format.DateFormat.getDateFormat(
            MyApplication.getInstance().getApplicationContext());
String dateFormatted = timeFormat.format(dateTime.toDate());

结果是例如:“2016年7月23日”(适用于法国移动的);或“16-07-23”(加拿大移动的)等。
在所有情况下,我希望年份的格式为2位数:“2016年7月23日”会变成“7月23日16时”“7月23日16时”会保持不变......
Ps:对于信息我使用尤达日期时间库。
请问怎么做?

xkftehaa

xkftehaa1#

尝试使用SimpleDateFormat,例如:

long date = <your UTC time in milliseconds>;
SimpleDateFormat formatter = new SimpleDateFormat ("d-MM-yyyy");
String s = formatter.format (date);

有关详细信息,请参见API spec
如果"android mobile format"指的是用户在android设置中选择的日期格式,则可以通过以下方式获得该值

android.text.format.DateFormat.getDateFormat(context)

之后,您可能需要解析它,并将4位数的年份模式替换为2位数的年份模式,最后使用SimpleDateFormat完成,如上所示。

v8wbuo2f

v8wbuo2f2#

我找到了一个很好的解决方案。它是一个直接修改原始模式的变通方案:

DateFormat timeFormat = DateFormat.getDateFormat(
            MyApplication.getInstance().getApplicationContext());

    if (timeFormat instanceof SimpleDateFormat) {
        String pattern = ((SimpleDateFormat) timeFormat).toPattern()
        // Change year format on 2 digits
        pattern = pattern.replaceAll("yyyy", "yy");            
        timeFormat = new SimpleDateFormat(pattern);
    }      

    return timeFormat.format(dateTime.toDate());

谢谢你们

i34xakig

i34xakig3#

我做了一些调整:

public static String formatDate2DigitYear(@Nullable Date date) {
    if (date == null)
        return "";

    DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(App.get());

    if (dateFormat instanceof SimpleDateFormat) {
        String pattern = ((SimpleDateFormat) dateFormat).toPattern();

        if (pattern.matches("^[^y]*yyyy[^y]*$")) {
            pattern = pattern.replaceAll("yyyy", "yy");
        } else if (pattern.matches("^[^y]*y[^y]*$")) {
            pattern = pattern.replaceAll("y", "yy");
        }

        dateFormat = new SimpleDateFormat(pattern, Locale.getDefault());
    }

    return dateFormat.format(date);
}

相关问题