Kann mich jemand über die in der SimpleDateFormat-Klasse verfügbaren Datumsformate informieren?
Ich habe API durchlaufen, konnte aber keine zufriedenstellende Antwort finden. Jede Hilfe wird sehr geschätzt.
Kann mich jemand über die in der SimpleDateFormat-Klasse verfügbaren Datumsformate informieren?
Ich habe API durchlaufen, konnte aber keine zufriedenstellende Antwort finden. Jede Hilfe wird sehr geschätzt.
Antworten:
Datums- und Uhrzeitformate werden im Folgenden ausführlich beschrieben
SimpleDateFormat (Java Platform SE 7) - Datums- und Zeitmuster
Es kann eine n
Anzahl von Formaten geben, die Sie möglicherweise erstellen können. ex - dd/MM/yyyy
oder YYYY-'W'ww-u
oder Sie können die Buchstaben mischen und anpassen, um das gewünschte Muster zu erzielen. Musterbuchstaben sind wie folgt.
G
- Epochenbezeichner (AD)y
- Jahr (1996; 96)Y
- Wochenjahr (2009; 09)M
- Monat im Jahr (Juli; Juli; 07)w
- Woche im Jahr (27)W
- Woche im Monat (2)D
- Tag im Jahr (189)d
- Tag im Monat (10)F
- Wochentag im Monat (2)E
- Tagesname in der Woche (Dienstag; Di)u
- Wochentag Nummer (1 = Montag, ..., 7 = Sonntag)a
- AM / PM-MarkerH
- Stunde am Tag (0-23)k
- Stunde am Tag (1-24)K
- Stunde in morgens / abends (0-11)h
- Stunde in morgens / abends (1-12)m
- Minute in Stunde (30)s
- Zweiter in Minute (55)S
- Millisekunde (978)z
- Allgemeine Zeitzone (Pacific Standard Time; PST; GMT-08: 00)Z
- Zeitzone RFC 822 (-0800)X
- Zeitzone ISO 8601 (-08; -0800; -08: 00)Zum Parsen:
2000-01-23T04: 56: 07.000 + 0000
Verwenden:
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
SimpleDateFormat
Erlaube das Festlegen des Gebietsschemas am Konstruktor. SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale);
Lassen Sie mich einen Beispielcode herauswerfen, den ich von http://www3.ntu.edu.sg/home/ehchua/programming/java/DateTimeCalendar.html erhalten habe. Dann können Sie mit verschiedenen Optionen herumspielen, bis Sie ihn verstanden haben.
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
Date now = new Date();
//This is just Date's toString method and doesn't involve SimpleDateFormat
System.out.println("toString(): " + now); // dow mon dd hh:mm:ss zzz yyyy
//Shows "Mon Oct 08 08:17:06 EDT 2012"
SimpleDateFormat dateFormatter = new SimpleDateFormat("E, y-M-d 'at' h:m:s a z");
System.out.println("Format 1: " + dateFormatter.format(now));
// Shows "Mon, 2012-10-8 at 8:17:6 AM EDT"
dateFormatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Format 2: " + dateFormatter.format(now));
// Shows "Mon 2012.10.08 at 08:17:06 AM EDT"
dateFormatter = new SimpleDateFormat("EEEE, MMMM d, yyyy");
System.out.println("Format 3: " + dateFormatter.format(now));
// Shows "Monday, October 8, 2012"
// SimpleDateFormat can be used to control the date/time display format:
// E (day of week): 3E or fewer (in text xxx), >3E (in full text)
// M (month): M (in number), MM (in number with leading zero)
// 3M: (in text xxx), >3M: (in full text full)
// h (hour): h, hh (with leading zero)
// m (minute)
// s (second)
// a (AM/PM)
// H (hour in 0 to 23)
// z (time zone)
// (there may be more listed under the API - I didn't check)
}
}}
Viel Glück!
AKTUALISIEREN
Die anderen Fragen sind veraltet. Die schrecklichen Legacy-Klassen, wie sie vor SimpleDateFormat
Jahren durch die modernen Java.time- Klassen ersetzt wurden.
Zum Definieren Ihrer eigenen benutzerdefinierten Formatierungsmuster sind die Codes in DateTimeFormatter
ähnlich, aber nicht genau identisch mit den Codes in SimpleDateFormat
. Lesen Sie unbedingt die Dokumentation. Suchen Sie im Stapelüberlauf nach vielen Beispielen.
DateTimeFormatter f =
DateTimeFormatter.ofPattern(
"dd MMM uuuu" ,
Locale.ITALY
)
;
Die Norm ISO 8601 definiert Formate für viele Arten von Datums- und Uhrzeitwerten. Diese Formate sind für den Datenaustausch konzipiert und können sowohl maschinell analysiert als auch vom Menschen kulturübergreifend leicht gelesen werden.
Die Klassen java.time verwenden standardmäßig ISO 8601-Formate, wenn Zeichenfolgen generiert / analysiert werden. Rufen Sie einfach die toString
& parse
Methoden auf. Sie müssen kein Formatierungsmuster angeben.
Instant.now().toString()
2018-11-05T18: 19: 33.017554Z
Für einen Wert in UTC bedeutet das Z
am Ende UTC und wird „Zulu“ ausgesprochen.
Anstatt ein Formatierungsmuster anzugeben, können Sie java.time automatisch für Sie lokalisieren lassen. Verwenden Sie die DateTimeFormatter.ofLocalized…
Methoden.
Erhalten Sie den aktuellen Moment mit der Wanduhrzeit, die von den Menschen einer bestimmten Region (einer Zeitzone) verwendet wird.
ZoneId z = ZoneId.of( "Africa/Tunis" );
ZonedDateTime zdt = ZonedDateTime.now( z );
Generieren Sie Text im Standardformat ISO 8601, der sinnvoll erweitert wurde, um den Namen der Zeitzone in eckigen Klammern anzuhängen.
zdt.toString (): 2018-11-05T19: 20: 23.765293 + 01: 00 [Afrika / Tunis]
Generieren Sie automatisch lokalisierten Text.
Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( locale );
String output = zdt.format( f );
Ausgabe: lundi 5 novembre 2018 à 19:20:23 heure normale d'Europe centrale
Im Allgemeinen ist es besser, automatisch zu lokalisieren, als sich mit fest codierten Formatierungsmustern zu ärgern.
Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Legacy - Datum-Zeit - Klassen wie java.util.Date
, Calendar
, & SimpleDateFormat
.
Weitere Informationen finden Sie im Oracle-Lernprogramm . Suchen Sie im Stapelüberlauf nach vielen Beispielen und Erklärungen. Die Spezifikation ist JSR 310 .
Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration zu den Klassen java.time .
Sie können java.time- Objekte direkt mit Ihrer Datenbank austauschen . Verwenden Sie einen JDBC-Treiber, der mit JDBC 4.2 oder höher kompatibel ist . Keine Notwendigkeit für Strings, keine Notwendigkeit für java.sql.*
Klassen. Hibernate 5 und JPA 2.2 unterstützen java.time .
Woher bekomme ich die java.time-Klassen?
Überprüfen Sie die Formate hier http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
Main
System.out.println("date : " + new classname().getMyDate("2014-01-09 14:06", "dd-MMM-yyyy E hh:mm a z", "yyyy-MM-dd HH:mm"));
Methode
public String getMyDate(String myDate, String returnFormat, String myFormat)
{
DateFormat dateFormat = new SimpleDateFormat(returnFormat);
Date date=null;
String returnValue="";
try {
date = new SimpleDateFormat(myFormat, Locale.ENGLISH).parse(myDate);
returnValue = dateFormat.format(date);
} catch (ParseException e) {
returnValue= myDate;
System.out.println("failed");
e.printStackTrace();
}
return returnValue;
}