在日期格式化后以小写字母显示AM和PM

xrc*_*wrn 62 java datetime simpledateformat

格式化日期后我显示时间显示上午或下午(大写)我希望它在小写像上午,下午这是我的代码

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);  
    }
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*hin 83

这有效

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);
    }
}
Run Code Online (Sandbox Code Playgroud)


Bri*_*new 66

不幸的是,标准的格式化方法不允许你这样做.乔达也不是.我想你将不得不通过一个简单的post-format替换来处理你的格式化日期.

String str = oldstr.replace("AM", "am").replace("PM","pm");
Run Code Online (Sandbox Code Playgroud)

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

编辑:詹姆斯Jithin的解决方案看起来好多了,并采取正确的方法(如评论中所述)

  • [James Jithin`发布的[答案](http://stackoverflow.com/a/13581910/1288725)是完美的方法. (4认同)
  • 一个变体 `timeStr = timeStr.toLowerCase(Locale.UK);` (2认同)

RNJ*_*RNJ 6

试试这个:

System.out.println("time is " + ts.toLowerCase());
Run Code Online (Sandbox Code Playgroud)

虽然您可以在此处此处详细说明创建自定义格式

不幸的是,开箱即的AM和PM似乎不能在标准的SimpleDateFormat类中进行定制

  • 这将使整个字符串变为小写,我想 OP 只需要小写 am/pm,否则,这是一个很好的解决方案:) (2认同)

Nik*_*vić 5

如果您不想执行字符串替换,并且正在使用Java 8 javax.time

Map<Long, String> ampm = new HashMap<>();
ampm.put(0l, "am");
ampm.put(1l, "pm");

DateTimeFormatter dtf = new DateTimeFormatterBuilder()
        .appendPattern("E M/d h:mm")
        .appendText(ChronoField.AMPM_OF_DAY, ampm)
        .toFormatter()
        .withZone(ZoneId.of("America/Los_Angeles"));
Run Code Online (Sandbox Code Playgroud)

DateTimeFormatter由于没有用于小写am / pm的图案符号,因此必须手动构建(指定单个片段)。您可以appendPattern在之前和之后使用。

我相信没有办法替代默认的am / pm符号,这是唯一的一种在最终字符串上进行字符串替换的方法。


小智 5

Calendar c = Calendar.getInstance();

System.out.println("Current time => " + c.getTime());

SimpleDateFormat df = new SimpleDateFormat("HH:mm a");
String formattedDate = df.format(c.getTime());
formattedDate = formattedDate.replace("a.m.", "AM").replace("p.m.","PM");

TextView textView = findViewById(R.id.textView);
textView.setText(formattedDate);
Run Code Online (Sandbox Code Playgroud)