1303 Stimmen

Wie man die aktuelle Zeit und das Datum in Android abruft

Wie kann ich die aktuelle Uhrzeit und das Datum in einer Android-App abrufen?

106voto

Basil Bourque Punkte 256611

Tl;dr

Instant.now()  // Current moment in UTC.

oder

ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )  // In a particular time zone

Einzelheiten

Die anderen Antworten sind zwar richtig, aber nicht mehr aktuell. Die alten Datum-Zeit-Klassen haben sich als schlecht konzipiert, verwirrend und problematisch erwiesen.

java.time

An die Stelle dieser alten Klassen sind die java.time Rahmen.

Diese neuen Kurse sind inspiriert von dem sehr erfolgreichen Joda-Time Projekt, definiert durch JSR 310 und erweitert um die DreiZehn-Extra Projekt.

Siehe die Oracle-Tutorial .

Instant

Eine Instant ist ein Moment auf der Zeitachse in UTC mit einer Auflösung bis zu Nanosekunden .

 Instant instant = Instant.now(); // Current moment in UTC.

Zeitzone

Anwenden einer Zeitzone ( ZoneId ), um eine ZonedDateTime . Wenn Sie die Zeitzone weglassen, wird implizit die aktuelle Standardzeitzone der JVM verwendet. Besser ist es, die gewünschte/erwartete Zeitzone explizit anzugeben.

Verwenden Sie richtige Namen für Zeitzonen im Format von continent/region wie zum Beispiel America/Montreal , Europe/Brussels , oder Asia/Kolkata . Verwenden Sie niemals 3-4-Buchstaben-Abkürzungen wie EST o IST da sie weder genormt noch eindeutig sind.

ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Or "Asia/Kolkata", "Europe/Paris", and so on.
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );

Table of date-time types in Java, both modern and legacy

Erzeugen von Zeichenketten

Sie können leicht eine String als textuelle Darstellung des Datums-Zeit-Wertes. Sie können ein Standardformat, Ihr eigenes benutzerdefiniertes Format oder ein automatisch lokalisiertes Format verwenden.

ISO 8601

Sie können die toString Methoden zur Formatierung von Text unter Verwendung der üblichen und sinnvollen ISO 8601 Standard.

String output = instant.toString();

2016-03-23T03:09:01.613Z

Beachten Sie, dass für ZonedDateTime die toString Methode erweitert den ISO 8601-Standard, indem sie den Namen der Zeitzone in eckigen Klammern anfügt. Äußerst nützliche und wichtige Informationen, aber kein Standard.

2016-03-22T20:09:01.613-08:00[America/Los_Angeles]

Benutzerdefiniertes Format

Oder geben Sie Ihr eigenes Formatierungsmuster mit der Option DateTimeFormatter Klasse.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd/MM/yyyy hh:mm a" );

Geben Sie eine Locale für eine menschliche Sprache (Englisch, Französisch usw.), um den Namen des Tages/Monats zu übersetzen und um kulturelle Normen wie die Reihenfolge von Jahr, Monat und Datum zu definieren. Beachten Sie, dass Locale hat nichts mit der Zeitzone zu tun.

formatter = formatter.withLocale( Locale.US ); // Or Locale.CANADA_FRENCH or such.
String output = zdt.format( formatter );

Lokalisierung

Besser noch: Lassen Sie java.time die Arbeit der automatischen Lokalisierung übernehmen.

DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.MEDIUM );
String output = zdt.format( formatter.withLocale( Locale.US ) );  // Or Locale.CANADA_FRENCH and so on.

Über java.time

En java.time Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Erbe Datum-Zeit-Klassen wie java.util.Date , Calendar , & SimpleDateFormat .

Weitere Informationen finden Sie in der Oracle-Tutorial . Auf Stack Overflow finden Sie viele Beispiele und Erklärungen. Spezifikation ist JSR 310 .

En Joda-Time Projekt, jetzt in Wartungsmodus rät zur Migration auf den java.time Klassen.

Sie können umtauschen java.time Objekte direkt mit Ihrer Datenbank. Verwenden Sie eine JDBC-Treiber übereinstimmend mit JDBC 4.2 oder später. Keine Notwendigkeit für Strings, keine Notwendigkeit für java.sql.* Klassen. Unterstützung von Hibernate 5 und JPA 2.2 java.time .

Wo können die java.time-Klassen bezogen werden?

Table listing which implementation of the java.time technology to use on which versions of Java and Android.

85voto

Kirit Punkte 841

Verwenden Sie für das aktuelle Datum und die Uhrzeit:

String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());

Welche Ausgaben:

Feb 27, 2012 5:41:23 PM

65voto

Amitsharma Punkte 1529

Versuchen Sie es mit der folgenden Methode. Alle Formate sind unten angegeben, um die Datums- und Zeitformate zu erhalten.

    Calendar c = Calendar.getInstance();
    SimpleDateFormat dateformat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss aa");
    String datetime = dateformat.format(c.getTime());
    System.out.println(datetime);

First

Second

Third

58voto

JosephL Punkte 5912

Um die aktuelle Uhrzeit zu ändern, können Sie System.currentTimeMillis() was in Java Standard ist. Dann können Sie es verwenden, um ein Datum zu erstellen

Date currentDate = new Date(System.currentTimeMillis());

Und wie bereits von anderen erwähnt, eine Zeit zu schaffen

Time currentTime = new Time();
currentTime.setToNow();

39voto

Himanshu Aggarwal Punkte 1753

Y

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());

Sortie :

2014-11-11 00:47:55

Y SimpleDateFormat de aquí .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X