日期格式化后以小写形式显示 AM 和 PM

新手上路,请多包涵

格式化日期时间后,时间以大写形式显示 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);
    }
}

原文由 xrcwrn 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 875
2 个回答

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

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

您可以使用使用 regepxs 的 replaceAll() 方法,但我认为以上内容可能就足够了。我 没有 做一个毯子 toLowerCase() 因为如果你将来更改格式字符串以包含(比如)月份名称或类似名称,那可能会搞砸格式。

编辑: James Jithin 的解决方案 看起来好多了,正确的方法是这样做(如评论中所述)

原文由 Brian Agnew 发布,翻译遵循 CC BY-SA 4.0 许可协议

这有效

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);
    }
}

原文由 James Jithin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题