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
.
Wie erhält man Jahr, Monat, Tag, Stunden, Minuten, Sekunden und Millisekunden des aktuellen Moments in Java?
römisch
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 String
Gebrauch 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
oderDateTimeFormatter
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
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
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()));
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.
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 ersetztjava.time.Instant
mit der Ankunft von JDBC 4.2.– Basilikum Bourque
20. Juni 2018 um 22:50 Uhr
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 ersetztjava.time.Instant
mit der Ankunft von JDBC 4.2.– Basilikum Bourque
20. Juni 2018 um 22:50 Uhr
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