Was ist der beste Weg, um das aktuelle Datum und die aktuelle Uhrzeit in Java zu erhalten?
Es hängt davon ab, welche Form von Datum und Uhrzeit Sie möchten:
Wenn Sie das Datum und die Uhrzeit als einen einzigen numerischen Wert haben möchten, gibt System.currentTimeMillis()
dies als Anzahl Millisekunden nach der UNIX-Epoche (als Java long
) ausgedrückt. Dieser Wert ist ein Delta aus einem UTC-Zeitpunkt und ist unabhängig von der lokalen Zeitzone ... unter der Annahme, dass die Systemuhr korrekt eingestellt wurde.
Wenn Sie möchten, dass Datum und Uhrzeit in einem Formular angezeigt werden, mit dem Sie auf die Komponenten (Jahr, Monat usw.) numerisch zugreifen können, haben Sie folgende Möglichkeiten:
new Date()
gibt Ihnen ein Date
-Objekt, das mit dem aktuellen Datum und der aktuellen Uhrzeit initialisiert wurde. Das Problem ist, dass die Date
-API-Methoden meist fehlerhaft sind ... und nicht mehr empfohlen werden.
Calendar.getInstance()
gibt Ihnen ein Calendar
-Objekt, das mit dem aktuellen Datum und der aktuellen Uhrzeit initialisiert wurde, und verwendet dabei die Standardeinstellungen Locale
und TimeZone
. Bei anderen Überladungen können Sie ein bestimmtes Locale
und/oder ein TimeZone
verwenden. Kalender funktioniert ... aber die APIs sind immer noch umständlich.
new org.joda.time.DateTime()
gibt Ihnen ein Joda-Zeit Objekt, das mit dem aktuellen Datum und der aktuellen Uhrzeit unter Verwendung der Standardzeitzone und der Standardzeit initialisiert wird. Es gibt viele andere Joda-Alternativen ... zu viele, um sie hier zu beschreiben. (Beachten Sie jedoch, dass einige Leute berichten, dass Joda Time Probleme mit der Leistung hat.; Zum Beispiel Jodatimes LocalDateTime ist langsam, wenn es zum ersten Mal verwendet wird .)
in Java 8 erhalten Sie durch Aufrufen von LocalDateTime.now()
und ZonedDateTime.now()
Repräsentationen1 für das aktuelle Datum/die aktuelle Uhrzeit.
Vor Java 8 empfahlen die meisten Benutzer, die über diese Dinge Bescheid wissen, Joda-time , dass sie (bei weitem) die besten Java-APIs für die Durchführung von Zeit- und Dauerberechnungen haben. Bei Java 8 trifft dies nicht mehr zu. Wenn Sie jedoch bereits Joda-Zeit in Ihrer Codebase verwenden, gibt es keine starke2 Grund für die Migration.
1 - Beachten Sie, dass LocalDateTime keine Zeitzone enthält. Wie der Javadoc sagt: "Es kann keinen Zeitpunkt auf der Zeitleiste ohne zusätzliche Informationen wie Offset oder Zeitzone darstellen."
2 - Ihr Code wird nicht beschädigt, wenn Sie dies nicht tun, und Sie erhalten keine Warnungen zur Zurückweisung von Daten. Sicher, die Joda-Codebase wird wahrscheinlich keine Updates mehr erhalten, aber es ist unwahrscheinlich, dass sie benötigt werden. Keine Updates bedeuten Stabilität und das ist eine Sache von good. Beachten Sie auch, dass es sehr wahrscheinlich ist, dass durch jemand Probleme behoben werden, die durch Regressionen in der Java-Plattform verursacht werden.
Wenn Sie nur einen Zeitstempel im Format JJJJ.MM.DD-HH.MM.SS (sehr häufiger Fall) ausgeben müssen, können Sie Folgendes tun:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
Wenn Sie das aktuelle Datum als Zeichenfolge verwenden möchten, versuchen Sie Folgendes:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date));
oder
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));
http://www.mkyong.com/Java/java-how-to-get-current-date-time-date-and-calender/
In Java 8 ist es:
LocalDateTime.now()
und falls Sie Zeitzoneninformationen benötigen:
ZonedDateTime.now()
und falls Sie ausgefallene formatierte Zeichenfolge drucken möchten:
System.out.println(ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME))
Erstellen Sie einfach ein Date-Objekt ...
Date date = new Date();
// 2015/09/27 15:07:53
System.out.println( new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime()) );
// 15:07:53
System.out.println( new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()) );
// 09/28/2015
System.out.println(new SimpleDateFormat("MM/dd/yyyy").format(Calendar.getInstance().getTime()));
// 20150928_161823
System.out.println( new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()) );
// Mon Sep 28 16:24:28 CEST 2015
System.out.println( Calendar.getInstance().getTime() );
// Mon Sep 28 16:24:51 CEST 2015
System.out.println( new Date(System.currentTimeMillis()) );
// Mon Sep 28
System.out.println( new Date().toString().substring(0, 10) );
// 2015-09-28
System.out.println( new Java.sql.Date(System.currentTimeMillis()) );
// 14:32:26
Date d = new Date();
System.out.println( (d.getTime() / 1000 / 60 / 60) % 24 + ":" + (d.getTime() / 1000 / 60) % 60 + ":" + (d.getTime() / 1000) % 60 );
// 2015-09-28 17:12:35.584
System.out.println( new Timestamp(System.currentTimeMillis()) );
// Java 8
// 2015-09-28T16:16:23.308+02:00[Europe/Belgrade]
System.out.println( ZonedDateTime.now() );
// Mon, 28 Sep 2015 16:16:23 +0200
System.out.println( ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME) );
// 2015-09-28
System.out.println( LocalDate.now(ZoneId.of("Europe/Paris")) ); // rest zones id in ZoneId class
// 16
System.out.println( LocalTime.now().getHour() );
// 2015-09-28T16:16:23.315
System.out.println( LocalDateTime.now() );
Instant.now() // Capture the current moment in UTC, with a resolution of nanoseconds.
… oder …
ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone).
Einige der Answers erwähnen, dass Java.time Klassen der moderne Ersatz für die lästigen alten älteren Datum-Uhrzeit-Klassen sind, die mit den frühesten Versionen von Java gebündelt sind. Unten finden Sie ein bisschen mehr Informationen.
In den anderen Antworten wird nicht erläutert, wie wichtig eine Zeitzone für die Ermittlung des aktuellen Datums und der aktuellen Uhrzeit ist. Für jeden Moment kann das Datum und die Zeit je nach Zone um den Globus variieren. Zum Beispiel ist ein paar Minuten nach Mitternacht ein neuer Tag in Paris Frankreich , während es in Montréal Québec immer noch „gestern“ ist.
Instant
Ein Großteil Ihrer Geschäftslogik und des Datenspeicherns/-austauschs sollte als Best Practice in UTC erfolgen.
Um den aktuellen Moment in UTC mit einer Auflösung in Nanosekunden zu erhalten, verwenden Sie Instant
= Klasse. Herkömmliche Computerhardware-Uhren sind in ihrer Genauigkeit begrenzt, so dass das aktuelle Moment in Millisekunden oder Mikrosekunden anstelle von Nanosekunden erfasst werden kann.
Instant instant = Instant.now();
ZonedDateTime
Sie können dieses Instant
in anderen Zeitzonen anpassen. Wenden Sie ein ZoneId
-Objekt an, um ein ZonedDateTime
zu erhalten.
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
Wir können das Instant
überspringen und das aktuelle ZonedDateTime
direkt abrufen.
ZonedDateTime zdt = ZonedDateTime.now( z );
Übergeben Sie immer dieses optionale Zeitzonenargument. Ohne Angabe wird die aktuelle Standardzeitzone Ihrer JVM angewendet. Die Standardeinstellung kann sich zu jeder Zeitpunkt ändern, sogar während Laufzeit. Setzen Sie Ihre App keinen externen Faktoren aus, die nicht Ihrer Kontrolle unterliegen. Geben Sie immer die gewünschte/erwartete Zeitzone an.
ZonedDateTime do_Not_Do_This = ZonedDateTime.now(); // BAD - Never rely implicitly on the current default time zone.
Sie können später ein Instant
aus dem ZonedDateTime
extrahieren.
Instant instant = zdt.toInstant();
Verwenden Sie immer ein Instant
oder ZonedDateTime
anstelle eines LocalDateTime
, wenn Sie einen tatsächlichen Moment auf der Timeline haben möchten. Die Typen Local…
Haben absichtlich keine Vorstellung von der Zeitzone, so dass sie nur eine ungefähre Vorstellung von einem möglichen Moment darstellen. Um einen tatsächlichen Moment zu erhalten, müssen Sie eine Zeitzone zuweisen, um die Typen Local…
In ZonedDateTime
umzuwandeln und dadurch aussagekräftig zu machen.
LocalDate
Die Klasse LocalDate
repräsentiert einen Datumswert ohne Uhrzeit und ohne Zeitzone.
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z ); // Always pass a time zone.
Um einen String zu generieren, der den Datums-/Zeitwert darstellt, rufen Sie einfach toString
in den Java.time-Klassen für die Standardformate ISO 8601 auf.
String output = myLocalDate.toString(); // 2016-09-23
… oder …
String output = zdt.toString(); // 2016-09-23T12:34:56.789+03:00[America/Montreal]
Die Klasse ZonedDateTime
erweitert das Standardformat, indem sie den Namen der Zeitzone in eckigen Klammern anfügt.
Durchsuchen Sie für andere Formate Stack Overflow nach vielen Fragen und Antworten in der Klasse DateTimeFormatter
.
LocalDateTime
Entgegen dem Kommentar zur Frage von RamanSB sollten Sie nichtLocalDateTime
als aktuelle Datums- und Uhrzeitklasse verwenden.
Dem LocalDateTime
fehlen absichtlich jegliche Zeitzonen- oder Versatzinformationen zu UTC. Das ist also nicht angebracht, wenn Sie einen bestimmten Moment auf der Timeline verfolgen. Auf jeden Fall nicht zur Erfassung des aktuellen Moments geeignet.
Die „lokale“ Formulierung ist nicht intuitiv. Es bedeutet any Lokalität und nicht irgendeine spezifische Lokalität. Beispielsweise beginnt Weihnachten dieses Jahr am 25. Dezember um Mitternacht: 2017-12-25T00:00:00
, Um als LocalDateTime
dargestellt zu werden. Dies bedeutet jedoch Mitternacht an verschiedenen Orten auf der ganzen Welt zu unterschiedlichen Zeiten. Die Mitternacht ereignet sich zuerst in Kiribati , später in Neuseeland, Stunden später in Indien usw. Es vergehen mehrere Stunden, bevor Weihnachten in Frankreich beginnt, wenn die Kinder in Kanada noch auf diesen Tag warten. Jeder dieser Weihnachtsstartpunkte würde als separates ZonedDateTime
dargestellt.
Wenn Sie Ihrer Systemuhr nicht vertrauen können, lesen Sie Java: Aktuelles Datum und Uhrzeit vom Server abrufen, nicht von der Systemuhr und meine Antwort .
Java.time.Clock
Schreiben Sie eine Unterklasse der Klasse abstract Java.time.Clock
, um einen alternativen Anbieter des aktuellen Moments zu nutzen.
Sie können Ihre Clock
-Implementierung als Argument an die verschiedenen Java.time -Methoden übergeben. Zum Beispiel Instant.now( clock )
.
Instant instant = Instant.now( yourClockGoesHere ) ;
Beachten Sie zu Testzwecken die alternativen Implementierungen von Clock
, die statisch von Clock
selbst verfügbar sind: fixed
, offset
, tick
und mehr.
Das Java.time Framework ist in Java 8 und höher. Diese Klassen ersetzen das lästige alte Legacy Datum-Zeit-Klassen wie Java.util.Date
, Calendar
, & SimpleDateFormat
.
Das Joda-Time -Projekt, das sich jetzt im Wartungsmodus befindet, rät zur Migration in die Java.time -Klassen.
Weitere Informationen finden Sie im Oracle Tutorial . Durchsuchen Sie Stack Overflow nach vielen Beispielen und Erklärungen. Spezifikation ist JSR 31 .
Sie können Java.time Objekte direkt mit Ihrer Datenbank austauschen. Verwenden Sie einen JDBC-Treiber , der JDBC 4.2 oder höher entspricht. Keine Notwendigkeit für Zeichenketten, keine Notwendigkeit für Klassen Java.sql.*
.
Woher bekommen Sie die Java.time-Klassen?
Das Projekt ThreeTen-Extra erweitert Java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Ergänzungen von Java.time. Hier finden Sie möglicherweise einige nützliche Klassen wie Interval
, YearWeek
, YearQuarter
und mehr .
Benutzen:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
System.out.println(timeStamp );
(Es funktioniert.)
Es gibt viele verschiedene Methoden:
Erstellen Sie ein Datumsobjekt und drucken Sie es einfach nach.
Date d = new Date(System.currentTimeMillis());
System.out.print(d);
Ähnlich den obigen Lösungen. Aber ich bin immer auf der Suche nach diesem Code:
Date date=Calendar.getInstance().getTime();
System.out.println(date);
Haben Sie sich Java.util.Date angesehen? Es ist genau das, was du willst.
Java.util.Date date = new Java.util.Date();
Es wird automatisch mit der Zeit gefüllt, zu der es instanziiert wurde.
Erstellen Sie für Java.util.Date einfach ein neues Datum ().
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date)); //2016/11/16 12:08:43
Verwendet für Java.util.Calendar Calendar.getInstance ()
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal)); //2016/11/16 12:08:43
Verwendet für Java.time.LocalDateTime LocalDateTime.now ()
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
System.out.println(dtf.format(now)); //2016/11/16 12:08:43
Verwendet für Java.time.LocalDate LocalDate.now ()
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate localDate = LocalDate.now();
System.out.println(dtf.format(localDate)); //2016/11/16
Referenz: https://www.mkyong.com/Java/java-how-to-get-current-date-time-date-and-calender/
1st Verstehen Sie die Java.util.Date-Klasse
1.1 So erhalten Sie das aktuelle Datum
import Java.util.Date;
class Demostration{
public static void main(String[]args){
Date date = new Date(); // date object
System.out.println(date); // Try to print the date object
}
}
1.2 Wie verwende ich die getTime () Methode?
import Java.util.Date;
public class Main {
public static void main(String[]args){
Date date = new Date();
long timeInMilliSeconds = date.getTime();
System.out.println(timeInMilliSeconds);
}
}
Dies gibt die Anzahl der Millisekunden seit dem 1. Januar 1970 um 00:00:00 GMT zum Zeitvergleich zurück.
1.3 Formatieren der Uhrzeit mithilfe der SimpleDateFormat-Klasse
import Java.text.DateFormat;
import Java.text.SimpleDateFormat;
import Java.util.Date;
class Demostration{
public static void main(String[]args){
Date date=new Date();
DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
String formattedDate=dateFormat.format(date);
System.out.println(formattedDate);
}
}
Versuchen Sie auch andere Formatmuster wie "jjjj-MM-tt hh: mm: ss" und wählen Sie das gewünschte Muster aus. http://docs.Oracle.com/javase/7/docs/api/Java/text/SimpleDateFormat.html
2nd Verstehen Sie die Java.util.Calendar-Klasse
2.1 Verwenden der Kalenderklasse zum Abrufen des aktuellen Zeitstempels
import Java.util.Calendar;
class Demostration{
public static void main(String[]args){
Calendar calendar=Calendar.getInstance();
System.out.println(calendar.getTime());
}
}
2.2 Verwenden Sie setTime und andere Set-Methoden, um den Kalender auf ein anderes Datum einzustellen.
Quelle: http://javau91.blogspot.com/
Ich finde dies der beste Weg:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime())); // 2014/08/06 16:00:22
Benutzen:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd::HH:mm:ss");
System.out.println(sdf.format(System.currentTimeMillis()));
Die Anweisung print gibt die Uhrzeit aus, zu der sie aufgerufen wird, und nicht, wenn SimpleDateFormat
erstellt wurde. So kann es wiederholt aufgerufen werden, ohne neue Objekte anzulegen.
Wie bereits erwähnt, kann das grundlegende Date () das tun, was Sie benötigen, um die aktuelle Uhrzeit zu erhalten. In meiner jüngsten Erfahrung in der Arbeit mit Java-Dates gibt es eine Vielzahl von Kuriositäten mit den eingebauten Klassen (sowie die Abwertung vieler Date-Klassenmethoden). Eine Kuriosität, die mir aufgefallen ist, war, dass die Monate auf 0 Indizes basieren, was aus technischer Sicht sinnvoll ist, aber in Wirklichkeit sehr verwirrend sein kann.
Wenn Sie sich nur mit dem aktuellen Datum befassen, sollte dies ausreichen. Wenn Sie jedoch viele Manipulationen/Berechnungen mit Datumsangaben vornehmen möchten, kann es sehr nützlich sein, eine Drittanbieter-Bibliothek zu verwenden (es gibt viele, da viele Java-Entwickler mit dem Ergebnis nicht zufrieden sind die eingebaute Funktionalität).
Ich stimme der Empfehlung von Stephen C zu, da ich die Joda-Zeit als sehr nützlich für die Vereinfachung meiner Arbeit mit Datumsangaben empfunden habe. Sie ist auch sehr gut dokumentiert und es gibt viele nützliche Beispiele im gesamten Web. Ich habe sogar eine statische Wrapper-Klasse (als DateUtils) geschrieben, die ich zur Konsolidierung und Vereinfachung meiner üblichen Datumsmanipulation verwende.
Die neue Data-Time-API wird mit dem Beginn von Java 8 eingeführt. Dies ist fällig folgende Probleme, die in der alten Daten-Zeit-API verursacht wurden.
Schwierig mit der Zeitzone umzugehen: Sie müssen viel Code schreiben, um mit .__ umzugehen. Zeitzonen.
Nicht threadsicher: Java.util.Date ist nicht threadsicher.
Schauen Sie sich also mit Java 8 um
import Java.time.LocalDate;
import Java.time.LocalTime;
import Java.time.LocalDateTime;
import Java.time.Month;
public class DataTimeChecker {
public static void main(String args[]) {
DataTimeChecker dateTimeChecker = new DataTimeChecker();
dateTimeChecker.DateTime();
}
public void DateTime() {
// Get the current date and time
LocalDateTime currentTime = LocalDateTime.now();
System.out.println("Current DateTime: " + currentTime);
LocalDate date1 = currentTime.toLocalDate();
System.out.println("Date : " + date1);
Month month = currentTime.getMonth();
int day = currentTime.getDayOfMonth();
int seconds = currentTime.getSecond();
System.out.println("Month : " + month);
System.out.println("Day : " + day);
System.out.println("Seconds : " + seconds);
LocalDateTime date2 = currentTime.withDayOfMonth(17).withYear(2018);
System.out.println("Date : " + date2);
//Prints 17 May 2018
LocalDate date3 = LocalDate.of(2018, Month.MAY, 17);
System.out.println("Date : " + date3);
//Prints 04 hour 45 minutes
LocalTime date4 = LocalTime.of(4, 45);
System.out.println("Date : " + date4);
// Convert to a String
LocalTime date5 = LocalTime.parse("20:15:30");
System.out.println("Date : " + date5);
}
}
Ausgabe der Codierung oben:
Current DateTime: 2018-05-17T04:40:34.603
Date : 2018-05-17
Month : MAY
Day : 17
Seconds : 34
Date : 2018-05-17T04:40:34.603
Date : 2018-05-17
Date : 04:45
Date : 20:15:30
Schauen Sie sich die Date Klasse an. Es gibt auch die neuere Calendar -Klasse, die die bevorzugte Methode für viele Datums-/Uhrzeitoperationen ist (viele der Methoden am Date wurden nicht mehr unterstützt)
Wenn Sie nur das aktuelle Datum wünschen, erstellen Sie entweder ein neues Date-Objekt oder rufen Sie Calendar.getInstance();
auf.
import Java.util.*;
import Java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft =
new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Current Date: " + ft.format(dNow));
}
}
sie können Datum für aktuelle Daten verwenden. also mit
SimpleDateFormat
get format
System.out.println( new SimpleDateFormat("yyyy:MM:dd - hh:mm:ss a").format(Calendar.getInstance().getTime()) );
//2018:02:10 - 05:04:20 PM
datum/Uhrzeit mit AM/PM
Ich habe diese Methode erstellt, es funktioniert für mich ...
public String GetDay() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd")));
}
public String GetNameOfTheDay() {
return String.valueOf(LocalDateTime.now().getDayOfWeek());
}
public String GetMonth() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("MM")));
}
public String GetNameOfTheMonth() {
return String.valueOf(LocalDateTime.now().getMonth());
}
public String GetYear() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy")));
}
public boolean isLeapYear(long year) {
return Year.isLeap(year);
}
public String GetDate() {
return GetDay() + "/" + GetMonth() + "/" + GetYear();
}
public String Get12HHour() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("hh")));
}
public String Get24HHour() {
return String.valueOf(LocalDateTime.now().getHour());
}
public String GetMinutes() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("mm")));
}
public String GetSeconds() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("ss")));
}
public String Get24HTime() {
return Get24HHour() + ":" + GetMinutes();
}
public String Get24HFullTime() {
return Get24HHour() + ":" + GetMinutes() + ":" + GetSeconds();
}
public String Get12HTime() {
return Get12HHour() + ":" + GetMinutes();
}
public String Get12HFullTime() {
return Get12HHour() + ":" + GetMinutes() + ":" + GetSeconds();
}
Sie können Date
object und formatieren. Es ist schwer zu formatieren und benötigt mehr Codes, zum Beispiel
Date dateInstance = new Date();
int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900.
int date = dateInstance.getDate();
int month = dateInstance.getMonth();
int day = dateInstance.getDay();
int hours = dateInstance.getHours();
int min = dateInstance.getMinutes();
int sec = dateInstance.getSeconds();
String dayOfWeek = "";
switch(day){
case 0:
dayOfWeek = "Sunday";
break;
case 1:
dayOfWeek = "Monday";
break;
case 2:
dayOfWeek = "Tuesday";
break;
case 3:
dayOfWeek = "Wednesday";
break;
case 4:
dayOfWeek = "Thursday";
break;
case 5:
dayOfWeek = "Friday";
break;
case 6:
dayOfWeek = "Saturday";
break;
}
System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek);
System.out.println("Time: " + hours +":"+ min + ":" + sec);
ausgabe:
Date: 2017-6-23 Sunday
Time: 14:6:20
Wie Sie sehen können, ist dies der schlechteste Weg, den Sie tun können, und laut Oracle-Dokumentation ist dies veraltet .
Oracle-Dokument:
Die Klasse Date repräsentiert einen bestimmten Zeitpunkt mit Millisekunde Präzision.
Vor JDK 1.1 hatte die Klasse Date zwei zusätzliche Funktionen. Es erlaubte die Interpretation von Datumsangaben als Jahr, Monat, Tag, Stunde, Minute, und zweite Werte. Es erlaubte auch die Formatierung und Analyse des Datums Streicher Leider war die API für diese Funktionen nicht zugänglich zur Internationalisierung. Ab JDK 1.1 sollte die Calendar-Klasse .__ sein. Wird verwendet, um zwischen Datums- und Zeitfeldern und der DateFormat-Klasse zu konvertieren sollte zum Formatieren und Analysieren von Datumszeichenfolgen verwendet werden. Die entsprechende Methoden in Date sind veraltet.
Alternativ können Sie Calendar
class verwenden,
Calendar.YEAR;
//and lot more
Um die aktuelle Uhrzeit abzurufen, können Sie Folgendes verwenden:
Calendar rightNow = Calendar.getInstance();
Doc:
Wie auch andere locale-sensitive Klassen bietet
Calendar
eine KlassenmethodegetInstance
, um ein allgemein nützliches Objekt dieses Typs zu erhalten . DiegetInstance
-Methode des Kalenders gibt einCalendar
-Objekt zurück, dessen Kalender Felder wurden mit dem aktuellen Datum und der aktuellen Uhrzeit initialisiert
Untenstehender Code für nur Datum
Date rightNow = Calendar.getInstance().getTime();
System.out.println(rightNow);
Calendar
-Klasse hat auch Unterklassen. GregorianCalendar
ist eine von ihnen und eine konkrete Unterklasse von Calendar
und stellt das Standardkalendersystem dar, das von den meisten der Welt verwendet wird.
Beispiel mit GregorianCalendar
:
Calendar cal = new GregorianCalendar();
int hours = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
int ap = cal.get(Calendar.AM_PM);
String amVSpm;
if(ap == 0){
amVSpm = "AM";
}else{
amVSpm = "PM";
}
String timer = hours + "-" + minute + "-" + second + " " +amVSpm;
System.out.println(timer);
Sie können SimpleDateFormat
verwenden, eine einfache und schnelle Möglichkeit, das Datum zu formatieren:
String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String date = simpleDateFormat.format(new Date());
System.out.println(date);
Lesen Sie dieses Jakob Jenkov-Tutorial: Java SimpleDateFormat .
Wie bereits erwähnt, hatten wir keine einfache und beste Methode, um eingebaute Klassen oder APIs zu nutzen, wenn wir Daten aus Datumsangaben bearbeiten müssen.
Als Beispiel, Wenn wir zwischen zwei Datumsangaben unterscheiden müssen , wenn wir zwei Datumsangaben vergleichen müssen (es gibt auch eine eingebaute Methode dafür) } und viele mehr. Wir mussten Bibliotheken von Drittanbietern verwenden. Einer der guten und beliebtesten ist Joda Time.
Lesen Sie auch:
JodaTime
.Das Beste ist jetzt (in Java 8), dass niemand Bibliotheken aus irgendwelchen Gründen herunterladen und verwenden muss. Ein einfaches Beispiel, um das aktuelle Datum und die aktuelle Uhrzeit in Java 8 abzurufen.
LocalTime localTime = LocalTime.now();
System.out.println(localTime);
//with time zone
LocalTime localTimeWtZone = LocalTime.now(ZoneId.of("GMT+02:30"));
System.out.println(localTimeWtZone);
Einer der guter Blogbeitrag zum Lesen von Java 8-Datum .
Denken Sie daran, mehr über Java-Datum und -Uhrzeit zu erfahren, da es viel mehr Möglichkeiten und/oder nützliche Möglichkeiten gibt, die Sie verwenden können.
EDIT:
Gemäß dem @BasilBourque-Kommentar sind die störenden alten Datum-Zeit-Klassen wie Java.util.Date
, Java.util.Calendar
und Java.text.SimpleTextFormat
jetzt Vermächtnis , ersetzt durch die Java.time
Klassen .
Ich werde diese Antwort einreichen, weil es alles ist, was ich brauche, wenn ich die gleiche Frage habe:
Date currentDate = new Date(System.currentTimeMillis());
currentDate
ist jetzt Ihr aktuelles Datum in einem Java Date
-Objekt.
probieren Sie einfach diesen Code:
import Java.text.DateFormat;
import Java.text.SimpleDateFormat;
import Java.util.Calendar;
import Java.util.Date;
public class CurrentTimeDateCalendar {
public static void getCurrentTimeUsingDate() {
Date date = new Date();
String strDateFormat = "hh:mm:ss a";
DateFormat dateFormat = new SimpleDateFormat(strDateFormat);
String formattedDate= dateFormat.format(date);
System.out.println("Current time of the day using Date - 12 hour format: " + formattedDate);
}
public static void getCurrentTimeUsingCalendar() {
Calendar cal = Calendar.getInstance();
Date date=cal.getTime();
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String formattedDate=dateFormat.format(date);
System.out.println("Current time of the day using Calendar - 24 hour format: "+ formattedDate);
}
}
welches die Beispielausgabe ist:
Aktuelle Uhrzeit unter Verwendung des Datums - 12-Stunden-Formats: 23:13:01
Aktuelle Uhrzeit im Kalender - 24-Stunden-Format: 23:13:01
weitere Informationen zu: