Anzeige von AM und PM in Kleinbuchstaben ein, nachdem die Formatierung des Datums
Nach der Formatierung eines datetime-Wert, die Zeit zeigt AM oder PM in Großbuchstaben, aber ich will es in Kleinbuchstaben, wie am oder pm.
Dies ist mein code:
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);
}
}
st.toLowerCase()
wird es tun und es ist kein einfacher Weg.- Das Problem ist, dass, wie Monat und Tag-Namen, die AM/PM-marker ist ein bestimmtes Gebietsschema - es kann nicht sinnvoll, in einigen Sprachen zu zwingen, alles zu Kleinbuchstaben (abgesehen von der Tatsache, dass einige Sprachen verwenden Sie die 24 Stunden-Uhr für alles und nicht wirklich Begriffe, die für AM und PM an alle).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider ist die standard-Formatierung Methoden können Sie nicht tun. Noch ist Joda. Ich glaube du gehst zu haben, um Ihre formatierte Datum durch einen einfachen post-format ersetzen.
Könnten Sie die
replaceAll()
Methode, die verwendet regepxs, aber ich denke, die oben ist vielleicht ausreichend. Ich bin nicht tun eine DecketoLowerCase()
da könnte vermasselt die Formatierung, wenn Sie ändern Sie den format-string in die Zukunft zu enthalten (sagen) Monatsnamen oder ähnliches.EDIT: James Angelika Lösung sieht viel besser aus, und der richtige Weg, dies zu tun (wie bereits erwähnt in den Kommentaren)
James Jithin
ist der perfekte Ansatz, um es zu tun.timeStr = timeStr.toLowerCase(Locale.UK);
Dies funktioniert
Locale
imSimpleDateFormate
mitDateFormatSymbols
patzt es. Sie würden wahrscheinlich haben, um speziell die Symbole und nicht nur am/pm." "
mit""
e.g hh:mm bis hh:mmaVersuchen Sie dies:
Obwohl Sie möglicherweise in der Lage, ein benutzerdefiniertes format erstellen als detaillierte hier und hier
Leider aus der box die AM-und PM scheint das nicht zu sein, anpassbare, die in der standard " = SimpleDateFormat-Klasse
Wenn Sie nicht wollen, zu tun, string-Ersetzung, und sind mit Java 8
javax.time
:Ist es notwendig manuell erstellen eine
DateTimeFormatter
(Angabe der einzelnen Stücke), da es keine Muster, symbol für Kleinbuchstaben "am/pm". Sie könnenappendPattern
vor und nach.Ich glaube, es gibt keinen Weg, um ersetzen Sie die Standard-am/pm-Symbole, so dass diese nur so kurz ist, tun die Zeichenfolge ersetzen, die auf den endgültigen string zu.
James ' s Antwort ist großartig, wenn Sie wollen, anderer Stil, andere als die Standard-Uhr, Uhr. Aber ich fürchte, Sie müssen die Zuordnung zwischen Locale und Locale-spezifischen "AM/PM" setzen, um die Annahme der überschreibung. Nun verwenden Sie einfach die java-integrierte java.util.Formatter-Klasse. Also ein einfaches Beispiel sieht wie folgt aus:
Gibt es:
Beachten, dass, wenn Sie wollen, Großbuchstaben, ersetzen Sie einfach "%1$tp" mit "%1$Tp". Sie können mehr details finden Sie auf http://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html#dt.
fügen Sie einfach
toLowarCase()
wie diesesowie
toUpperCase()
wenn Sie wollen groß//Ausgabe => 06/18/2019 am (PST)
Locale.Großbritannien => am "oder " pm";
Gebietsschema.UNS => AM oder PM; probieren Sie verschiedene locale für Ihre Bedürfnisse (defaul, etc.)