在日期格式设置后以小写形式显示 AM 和 PM

2022-08-31 13:15:46

格式化日期时间后,时间以大写形式显示 AM 或 PM,但我希望它以小写形式显示,如 am 或 pm。

这是我的代码:

public class Timeis {
    public static void main(String s[]) {
        long ts = 1022895271767L;
        String st = null;  
        st = new SimpleDateFormat(" MMM d 'at' hh:mm a").format(ts);
        System.out.println("time is " + ts);  
    }
}

答案 1

这有效

public class Timeis {
    public static void main(String s[]) {
        long ts = 1022895271767L;
        SimpleDateFormat sdf = new SimpleDateFormat(" MMM d 'at' hh:mm a");
        // CREATE DateFormatSymbols WITH ALL SYMBOLS FROM (DEFAULT) Locale
        DateFormatSymbols symbols = new DateFormatSymbols(Locale.getDefault());
        // OVERRIDE SOME symbols WHILE RETAINING OTHERS
        symbols.setAmPmStrings(new String[] { "am", "pm" });
        sdf.setDateFormatSymbols(symbols);
        String st = sdf.format(ts);
        System.out.println("time is " + st);
    }
}

答案 2

不幸的是,标准格式化方法不允许您这样做。Joda也没有。我认为您将不得不通过简单的后格式化替换来处理格式化的日期。

String str = oldstr.replace("AM", "am").replace("PM","pm");

您可以使用使用regepxs的方法,但我认为上述方法可能就足够了。我不是在做一揽子工作,因为如果您将来将格式字符串更改为包含(例如)月份名称或类似名称,这可能会搞砸格式。replaceAll()toLowerCase()

编辑:James Jithin的解决方案看起来好多了,以及执行此操作的正确方法(如评论中所述)