Wie erhält man Jahr, Monat, Tag, Stunden, Minuten, Sekunden und Millisekunden des aktuellen Moments in Java?

Lesezeit: 6 Minuten

Benutzer-Avatar
römisch

Wie kann ich das Jahr, den Monat, den Tag, die Stunden, Minuten, Sekunden und Millisekunden des aktuellen Moments in Java abrufen? Ich hätte sie gerne als Strings.

Benutzer-Avatar
BalusC

Sie können die Getter von verwenden java.time.LocalDateTime dafür.

LocalDateTime now = LocalDateTime.now();
int year = now.getYear();
int month = now.getMonthValue();
int day = now.getDayOfMonth();
int hour = now.getHour();
int minute = now.getMinute();
int second = now.getSecond();
int millis = now.get(ChronoField.MILLI_OF_SECOND); // Note: no direct getter available.

System.out.printf("%d-%02d-%02d %02d:%02d:%02d.%03d", year, month, day, hour, minute, second, millis);

Oder, wenn Sie noch nicht auf Java 8 sind, machen Sie Gebrauch von java.util.Calendar.

Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH) + 1; // Note: zero based!
int day = now.get(Calendar.DAY_OF_MONTH);
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
int second = now.get(Calendar.SECOND);
int millis = now.get(Calendar.MILLISECOND);

System.out.printf("%d-%02d-%02d %02d:%02d:%02d.%03d", year, month, day, hour, minute, second, millis);

In jedem Fall druckt dies ab sofort:

2010-04-16 15:15:17.816

Um ein zu konvertieren int zu StringGebrauch machen von String#valueOf().


Wenn Ihre Absicht ist Letztendlich Um sie in einem benutzerfreundlichen Zeichenfolgenformat anzuordnen und anzuzeigen, verwenden Sie besser entweder Java8 java.time.format.DateTimeFormatter (Anleitung hier),

LocalDateTime now = LocalDateTime.now();
String format1 = now.format(DateTimeFormatter.ISO_DATE_TIME);
String format2 = now.atZone(ZoneId.of("GMT")).format(DateTimeFormatter.RFC_1123_DATE_TIME);
String format3 = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss", Locale.ENGLISH));

System.out.println(format1);
System.out.println(format2);
System.out.println(format3);

oder wenn Sie noch nicht auf Java 8 sind, verwenden Sie java.text.SimpleDateFormat:

Date now = new Date(); // java.util.Date, NOT java.sql.Date or java.sql.Timestamp!
String format1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH).format(now);
String format2 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH).format(now);
String format3 = new SimpleDateFormat("yyyyMMddHHmmss", Locale.ENGLISH).format(now);

System.out.println(format1);
System.out.println(format2);
System.out.println(format3);

So oder so ergibt sich:

2010-04-16T15:15:17.816
Fri, 16 Apr 2010 15:15:17 GMT
20100416151517

Siehe auch:

  • Java-String-zu-Datum-Konvertierung

  • Wenn Sie printf verwenden, können Sie auch einfach die Formate für Datum/Uhrzeit verwenden, anstatt den Zwischenschritt zu verwenden, dh “%1$tm %1$te,%1$tY”, c (siehe java.util. Formatierer für die vollständige Syntax)

    – M. Jessup

    16. April 2010 um 15:50 Uhr

  • @M. Jessup: Das ist in der Tat schöner. Ich habe es jedoch nie benutzt, daher konnte ich es nicht von oben eingeben, das Obige dient nur zu Demozwecken. Trotzdem greife ich lieber zu SimpleDateFormat oder DateTimeFormatter für diese spezielle Aufgabe 🙂

    – BalusC

    16. April 2010 um 16:00 Uhr


  • Ich würde dringend empfehlen, joda-time zu verwenden, da es eine viel schönere und verständlichere API im Vergleich zu den schlecht gestalteten Daten und Kalendern ist, die Java direkt anbietet.

    – Kaisu

    23. April 2012 um 7:36 Uhr

  • Ich bevorzuge dieses, besonders bei i18n-Arbeiten, um startTime oder endTime zu erhalten: new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH).format(new Date());

    – Wirbel

    30. Mai 2016 um 2:29 Uhr


  • Ein Großteil der java.time-Funktionalität ist in Java 6 & 7 zurückportiert ThreeTen-Backport Projekt.

    – Basilikum Bourque

    22. Mai 2017 um 15:38 Uhr

Benutzer-Avatar
Krone

Wechseln zu Joda-Zeit und Sie können dies in drei Zeilen tun

DateTime jodaTime = new DateTime();

DateTimeFormatter formatter = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss.SSS");
System.out.println("jodaTime = " + formatter.print(jodaTime));

Sie haben auch ohne Kalender direkten Zugriff auf die einzelnen Felder des Datums.

System.out.println("year = " + jodaTime.getYear());
System.out.println("month = " + jodaTime.getMonthOfYear());
System.out.println("day = " + jodaTime.getDayOfMonth());
System.out.println("hour = " + jodaTime.getHourOfDay());
System.out.println("minute = " + jodaTime.getMinuteOfHour());
System.out.println("second = " + jodaTime.getSecondOfMinute());
System.out.println("millis = " + jodaTime.getMillisOfSecond());

Die Ausgabe ist wie folgt:

jodaTime = 2010-04-16 18:09:26.060

year = 2010
month = 4
day = 16
hour = 18
minute = 9
second = 26
millis = 60

Entsprechend http://www.joda.org/joda-time/

Joda-Time ist die De-facto-Standardbibliothek für Datum und Uhrzeit für Java. Ab Java SE 8 werden Benutzer aufgefordert, auf java.time (JSR-310) zu migrieren.

  • Zu Ihrer Information, das Joda-Time-Projekt befindet sich jetzt in der Wartung, und sein Team empfiehlt die Migration zu den java.time-Klassen. Sowohl Joda-Time als auch java.time werden von demselben Mann geleitet, Stephen Colebourne.

    – Basilikum Bourque

    22. Mai 2017 um 15:27 Uhr

Benutzer-Avatar
Blaubeere0xff

    // Java 8
    System.out.println(LocalDateTime.now().getYear());       // 2015
    System.out.println(LocalDateTime.now().getMonth());      // SEPTEMBER
    System.out.println(LocalDateTime.now().getDayOfMonth()); // 29
    System.out.println(LocalDateTime.now().getHour());       // 7
    System.out.println(LocalDateTime.now().getMinute());     // 36
    System.out.println(LocalDateTime.now().getSecond());     // 51
    System.out.println(LocalDateTime.now().get(ChronoField.MILLI_OF_SECOND)); // 100

    // Calendar
    System.out.println(Calendar.getInstance().get(Calendar.YEAR));         // 2015
    System.out.println(Calendar.getInstance().get(Calendar.MONTH ) + 1);   // 9
    System.out.println(Calendar.getInstance().get(Calendar.DAY_OF_MONTH)); // 29
    System.out.println(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));  // 7
    System.out.println(Calendar.getInstance().get(Calendar.MINUTE));       // 35
    System.out.println(Calendar.getInstance().get(Calendar.SECOND));       // 32
    System.out.println(Calendar.getInstance().get(Calendar.MILLISECOND));  // 481

    // Joda Time
    System.out.println(new DateTime().getYear());           // 2015
    System.out.println(new DateTime().getMonthOfYear());    // 9
    System.out.println(new DateTime().getDayOfMonth());     // 29
    System.out.println(new DateTime().getHourOfDay());      // 7
    System.out.println(new DateTime().getMinuteOfHour());   // 19
    System.out.println(new DateTime().getSecondOfMinute()); // 16
    System.out.println(new DateTime().getMillisOfSecond()); // 174

    // Formatted
    // 2015-09-28 17:50:25.756
    System.out.println(new Timestamp(System.currentTimeMillis()));

    // 2015-09-28T17:50:25.772
    System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH).format(new Date()));

    // Java 8
    // 2015-09-28T17:50:25.810
    System.out.println(LocalDateTime.now());

    // joda time
    // 2015-09-28 17:50:25.839
    System.out.println(DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss.SSS").print(new org.joda.time.DateTime()));

Benutzer-Avatar
Ortomala Lokni

Verwenden Sie mit Java 8 und höher die java.time-Paket.

ZonedDateTime.now().getYear();
ZonedDateTime.now().getMonthValue();
ZonedDateTime.now().getDayOfMonth();
ZonedDateTime.now().getHour();
ZonedDateTime.now().getMinute();
ZonedDateTime.now().getSecond();

ZonedDateTime.now() ist eine statische Methode, die das aktuelle Datum und die Uhrzeit von der Systemuhr in der Standardzeitzone zurückgibt. Alle Get-Methoden geben ein zurück int Wert.

Benutzer-Avatar
Pflaster

Oder verwenden Sie java.sql.Timestamp. Der Kalender ist ziemlich schwer, ich würde davon abraten, ihn im Produktionscode zu verwenden. Joda ist besser.

import java.sql.Timestamp;

public class DateTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(new Timestamp(System.currentTimeMillis()));
    }
}

  • Ich glaube, Sie haben sowohl die Frage als auch die Verwendung des SQL-Zeitstempels missverstanden. Sie würden normalerweise verwenden new Date() hier. Aber wie würden Sie die Einzelteile wie gewünscht einfach daraus bekommen?

    – BalusC

    16. April 2010 um 18:34 Uhr


  • Zu Ihrer Information, java.sql.Timestamp wurde durch die ersetzt java.time.Instant mit der Ankunft von JDBC 4.2.

    – Basilikum Bourque

    20. Juni 2018 um 22:50 Uhr

Benutzer-Avatar
Glück

in Java 7 Kalender eine Zeile

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").format(Calendar.getInstance().getTime())

  • Ich glaube, Sie haben sowohl die Frage als auch die Verwendung des SQL-Zeitstempels missverstanden. Sie würden normalerweise verwenden new Date() hier. Aber wie würden Sie die Einzelteile wie gewünscht einfach daraus bekommen?

    – BalusC

    16. April 2010 um 18:34 Uhr


  • Zu Ihrer Information, java.sql.Timestamp wurde durch die ersetzt java.time.Instant mit der Ankunft von JDBC 4.2.

    – Basilikum Bourque

    20. Juni 2018 um 22:50 Uhr

Benutzer-Avatar
techloris_109

Verwenden Sie das Formatierungsmuster „dd-MM-yyyy HH:mm:ss aa“, um das Datum zu erhalten als 21.10.2020 20:53:42 Uhr

1014410cookie-checkWie erhält man Jahr, Monat, Tag, Stunden, Minuten, Sekunden und Millisekunden des aktuellen Moments in Java?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy