Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java Datum und Zeit meistern: Konstruktoren, Methoden & Best Practices

Java stellt die Date-Klasse im java.util-Paket bereit, die das aktuelle Datum und die aktuelle Zeit kapselt.

Die Date-Klasse unterstützt zwei Konstruktoren wie in der folgenden Tabelle gezeigt.

Nr.Konstruktor & Beschreibung
1

Date()

Initialisiert das Objekt mit dem aktuellen Datum und der aktuellen Zeit.

2

Date(long millisec)

Akzeptiert ein Argument, das der Anzahl der Millisekunden entspricht, die seit Mitternacht, 1. Januar 1970, verstrichen sind.

Folgend die Methoden der Date-Klasse:

Nr.Methode & Beschreibung
1

boolean after(Date date)

Gibt true zurück, wenn das aufrufende Date-Objekt ein späteres Datum enthält als das angegebene date, sonst false.

2

boolean before(Date date)

Gibt true zurück, wenn das aufrufende Date-Objekt ein früheres Datum enthält als das angegebene date, sonst false.

3

Object clone()

Dupliziert das aufrufende Date-Objekt.

4

int compareTo(Date date)

Vergleicht den Wert des aufrufenden Objekts mit date. Gibt 0 zurück bei Gleichheit, negativen Wert wenn aufrufendes Objekt früher, positiven wenn später.

5

int compareTo(Object obj)

Funktioniert identisch zu compareTo(Date), wenn obj der Klasse Date angehört. Andernfalls wirft es ClassCastException.

6

boolean equals(Object date)

Gibt true zurück, wenn das aufrufende Date-Objekt dieselbe Zeit und dasselbe Datum wie das angegebene date enthält, sonst false.

7

long getTime()

Gibt die Anzahl der Millisekunden zurück, die seit 1. Januar 1970 verstrichen sind.

8

int hashCode()

Gibt einen Hash-Code für das aufrufende Objekt zurück.

9

void setTime(long time)

Setzt Zeit und Datum wie durch time spezifiziert, was eine verstrichene Zeit in Millisekunden seit Mitternacht, 1. Januar 1970, repräsentiert.

10

String toString()

Konvertiert das aufrufende Date-Objekt in einen String und gibt das Ergebnis zurück.

Aktuelles Datum und Uhrzeit erhalten

Dies ist eine sehr einfache Methode, um aktuelles Datum und Uhrzeit in Java zu erhalten. Sie können ein einfaches Date-Objekt mit der toString()-Methode verwenden, um aktuelles Datum und Uhrzeit auszugeben:

Beispiel

Live Demo
import java.util.Date;
public class DateDemo {
  public static void main(String args[]) {
    // Date-Objekt instanziieren
    Date date = new Date();
    // Zeit und Datum mit toString() anzeigen
    System.out.println(date.toString());
  }
}

Dies produziert folgendes Ergebnis:

Ausgabe

on May 04 09:51:52 CDT 2009

Datumsvergleich

Folgend drei Wege, zwei Daten zu vergleichen:

Datumsformatierung mit SimpleDateFormat

SimpleDateFormat ist eine konkrete Klasse für Formatierung und Parsing von Datumsangaben in locale-sensitiver Weise. SimpleDateFormat erlaubt es, benutzerdefinierte Muster für Datumszeit-Formatierung zu wählen.

Beispiel

Live Demo
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));
  }
}

Dies produziert folgendes Ergebnis:

Ausgabe

Current Date: Sun 2004.07.18 at 04:14:09 PM PDT

SimpleDateFormat Format-Codes

Um das Zeitformat anzugeben, verwenden Sie einen Zeitmuster-String. In diesem Muster sind alle ASCII-Buchstaben als Musterbuchstaben reserviert, definiert als:

ZeichenBeschreibungBeispiel
GEra-BezeichnerAD
yJahr in vier Ziffern2001
MMonat im JahrJuly oder 07
dTag im Monat10
hStunde in AM/PM (1~12)12
HStunde im Tag (0~23)22
mMinute in Stunde30
sSekunde in Minute55
SMillisekunde234
ETag in WocheTuesday
DTag im Jahr360
FWochentag im Monat2 (zweiter Mi. im Juli)
wWoche im Jahr40
WWoche im Monat1
aAM/PM-MarkerPM
kStunde im Tag (1~24)24
KStunde in AM/PM (0~11)10
zZeitzoneEastern Standard Time
'Escape für TextTrennzeichen
"Einfaches Anführungszeichen`

Datumsformatierung mit printf

Datums- und Zeitformatierung kann sehr einfach mit der printf-Methode durchgeführt werden. Sie verwenden ein zweibuchstabiges Format, beginnend mit t und endend mit einem der Buchstaben der folgenden Tabelle.

Beispiel

Live Demo
import java.util.Date;
public class DateDemo {
  public static void main(String args[]) {
    Date date = new Date();
    String str = String.format("Current Date/Time : %tc", date);
    System.out.printf(str);
  }
}

Dies produziert folgendes Ergebnis:

Ausgabe

Current Date/Time : Sat Dec 15 16:37:57 MST 2012

Es wäre etwas umständlich, das Datum mehrmals für jedes Format-Teil anzugeben. Deshalb kann ein Format-String den Index des zu formatierenden Arguments angeben.

Der Index muss unmittelbar dem % folgen und mit einem $ enden.

Beispiel

Live Demo
import java.util.Date;
public class DateDemo {
  public static void main(String args[]) {
    Date date = new Date();
    System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date);
  }
}

Dies produziert folgendes Ergebnis:

Ausgabe

Due date: February 09, 2004

Alternativ können Sie das <-Flag verwenden. Es zeigt an, dass dasselbe Argument wie in der vorangegangenen Formatspezifikation erneut verwendet werden soll.

Beispiel

Live Demo
import java.util.Date;
public class DateDemo {
  public static void main(String args[]) {
    Date date = new Date();
    System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
  }
}

Dies produziert folgendes Ergebnis:

Ausgabe

Due date: February 09, 2004

Datums- und Zeit-Konvertierungszeichen

ZeichenBeschreibungBeispiel
cVollständiges Datum und ZeitMon May 04 09:51:52 CDT 2009
FISO 8601 Datum2004-02-09
DUS-formatiertes Datum (Monat/Tag/Jahr)02/09/2004
T24-Stunden-Zeit18:05:19
r12-Stunden-Zeit06:05:19 pm
R24-Stunden-Zeit, keine Sekunden18:05
YVierstelliges Jahr (mit führenden Nullen)2004
yLetzte zwei Ziffern des Jahres (mit führenden Nullen)04
CErste zwei Ziffern des Jahres (mit führenden Nullen)20
BVollständiger MonatsnameFebruary
bAbgekürzter MonatsnameFeb
mZweistelliger Monat (mit führenden Nullen)02
dZweistelliger Tag (mit führenden Nullen)03
eZweistelliger Tag (ohne führende Nullen)9
AVollständiger WochentagsnameMonday
aAbgekürzter WochentagsnameMon
jDreistelliger Tag des Jahres (mit führenden Nullen)069
HZweistellige Stunde (mit führenden Nullen), 00-2318
kZweistellige Stunde (ohne führende Nullen), 0-2318
IZweistellige Stunde (mit führenden Nullen), 01-1206
lZweistellige Stunde (ohne führende Nullen), 1-126
MZweistellige Minuten (mit führenden Nullen)05
SZweistellige Sekunden (mit führenden Nullen)19
LDreistellige Millisekunden (mit führenden Nullen)047
NNeunstellige Nanosekunden (mit führenden Nullen)047000000
PGroßgeschriebener AM/PM-MarkerPM
pKleingeschriebener AM/PM-Markerpm
zRFC 822 numerischer Offset von GMT-0800
ZZeitzonePST
sSekunden seit 1970-01-01 00:00:00 GMT1078884319
QMillisekunden seit 1970-01-01 00:00:00 GMT1078884319047

Es gibt weitere nützliche Klassen im Zusammenhang mit Datum und Zeit. Für Details verweisen Sie auf die Java Standard-Dokumentation.

Strings in Datumsangaben parsen

Die SimpleDateFormat-Klasse hat zusätzliche Methoden, insbesondere parse(), die versucht, einen String gemäß dem in dem gegebenen SimpleDateFormat-Objekt gespeicherten Format zu parsen.

Beispiel

Live Demo
import java.util.*;
import java.text.*;
public class DateDemo {
  public static void main(String args[]) {
    SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
    String input = args.length == 0 ? "1818-11-11" : args[0];
    System.out.print(input + " Parses as ");
    Date t;
    try {
      t = ft.parse(input);
      System.out.println(t);
    } catch (ParseException e) {
      System.out.println("Unparseable using " + ft);
    }
  }
}

Ein Beispiel-Lauf des obigen Programms würde folgendes Ergebnis produzieren:

Ausgabe

1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818

Für eine Weile schlafen

Sie können für jede Dauer von einer Millisekunde bis zur Lebensdauer Ihres Computers schlafen. Zum Beispiel würde das folgende Programm 3 Sekunden schlafen:

Beispiel

Live Demo
import java.util.*;
public class SleepDemo {
  public static void main(String args[]) {
    try {
      System.out.println(new Date() + "\n");
      Thread.sleep(5*60*10);
      System.out.println(new Date() + "\n");
    } catch (Exception e) {
      System.out.println("Got an exception!");
    }
  }
}

Dies produziert folgendes Ergebnis:

Ausgabe

Sun May 03 18:04:41 GMT 2009
Sun May 03 18:04:51 GMT 2009

Verstrichene Zeit messen

Manchmal müssen Sie einen Zeitpunkt in Millisekunden messen. Lassen Sie uns das obige Beispiel neu schreiben:

Beispiel

Live Demo
import java.util.*;
public class DiffDemo {
  public static void main(String args[]) {
    try {
      long start = System.currentTimeMillis();
      System.out.println(new Date() + "\n");
      Thread.sleep(5*60*10);
      System.out.println(new Date() + "\n");
      long end = System.currentTimeMillis();
      long diff = end - start;
      System.out.println("Difference is : " + diff);
    } catch (Exception e) {
      System.out.println("Got an exception!");
    }
  }
}

Dies produziert folgendes Ergebnis:

Ausgabe

Sun May 03 18:16:51 GMT 2009
Sun May 03 18:16:57 GMT 2009
Difference is : 5993

GregorianCalendar-Klasse

GregorianCalendar ist eine konkrete Implementierung einer Calendar-Klasse, die den normalen gregorianischen Kalender implementiert, mit dem Sie vertraut sind. Wir haben die Calendar-Klasse in diesem Tutorial nicht besprochen; Sie können die Standard-Java-Dokumentation dazu einsehen.

Die getInstance()-Methode von Calendar gibt einen GregorianCalendar zurück, initialisiert mit aktuellem Datum und Zeit in der Standard-Locale und Zeitzone. GregorianCalendar definiert zwei Felder: AD und BC. Diese repräsentieren die beiden Epochen, die durch den gregorianischen Kalender definiert sind.

Es gibt auch mehrere Konstruktoren für GregorianCalendar-Objekte:

Erstellt GregorianCalendar basierend auf aktueller Zeit in gegebener Zeitzone mit Standard-Locale.

Nr.Konstruktor & Beschreibung
1

GregorianCalendar()

Erstellt einen Standard-GregorianCalendar mit aktueller Zeit in Standard-Zeitzone und Standard-Locale.

2

GregorianCalendar(int year, int month, int date)

Erstellt GregorianCalendar mit gegebenem Datum in Standard-Zeitzone und Standard-Locale.

3

GregorianCalendar(int year, int month, int date, int hour, int minute)

Erstellt GregorianCalendar mit gegebenem Datum und Zeit für Standard-Zeitzone und Standard-Locale.

4

GregorianCalendar(int year, int month, int date, int hour, int minute, int second)

Erstellt GregorianCalendar mit gegebenem Datum und Zeit für Standard-Zeitzone und Standard-Locale.

5

GregorianCalendar(Locale aLocale)

Erstellt GregorianCalendar basierend auf aktueller Zeit in Standard-Zeitzone mit gegebener Locale.

6

GregorianCalendar(TimeZone zone)

7

GregorianCalendar(TimeZone zone, Locale aLocale)

Erstellt GregorianCalendar basierend auf aktueller Zeit in gegebener Zeitzone mit gegebener Locale.

Hier ist eine Liste einiger nützlicher Support-Methoden der GregorianCalendar-Klasse:

Nr.Methode & Beschreibung
1

void add(int field, int amount)

Fügt die angegebene (vorzeichenbehaftete) Zeitmenge zum gegebenen Zeitfeld hinzu, basierend auf den Kalenderregeln.

2

protected void computeFields()

Konvertiert UTC als Millisekunden in Zeitfeldwerte.

3

protected void computeTime()

Überschreibt Calendar: Konvertiert Zeitfeldwerte in UTC als Millisekunden.

4

boolean equals(Object obj)

Vergleicht diesen GregorianCalendar mit einer Objektreferenz.

5

int get(int field)

Gibt den Wert für ein gegebenes Zeitfeld zurück.

6

int getActualMaximum(int field)

Gibt den Maximalwert zurück, den dieses Feld bei aktuellem Datum haben könnte.

7

int getActualMinimum(int field)

Gibt den Minimalwert zurück, den dieses Feld bei aktuellem Datum haben könnte.

8

int getGreatestMinimum(int field)

Gibt höchsten Minimalwert für gegebenes Feld zurück, falls variabel.

9

Date getGregorianChange()

Gibt das GregorianCalendar-Änderungsdatum zurück.

10

int getLeastMaximum(int field)

Gibt niedrigsten Maximalwert für gegebenes Feld zurück, falls variabel.

11

int getMaximum(int field)

Gibt Maximalwert für gegebenes Feld zurück.

12

Date getTime()

Gibt die aktuelle Zeit dieses Calendars zurück.

13

long getTimeInMillis()

Gibt die aktuelle Zeit dieses Calendars als long zurück.

14

TimeZone getTimeZone()

Gibt die Zeitzone zurück.

15

int getMinimum(int field)

Gibt Minimalwert für gegebenes Feld zurück.

16

int hashCode()

Überschreibt hashCode.

17

boolean isLeapYear(int year)

Bestimmt, ob das gegebene Jahr ein Schaltjahr ist.

18

void roll(int field, boolean up)

Addiert oder subtrahiert (up/down) eine einzelne Zeiteinheit auf gegebenem Zeitfeld ohne größere Felder zu ändern.

19

void set(int field, int value)

Setzt das Zeitfeld mit dem gegebenen Wert.

20

void set(int year, int month, int date)

Setzt Werte für Felder Jahr, Monat, Tag.

21

void set(int year, int month, int date, int hour, int minute)

Setzt Werte für Jahr, Monat, Tag, Stunde, Minute.

22

void set(int year, int month, int date, int hour, int minute, int second)

Setzt Werte für Jahr, Monat, Tag, Stunde, Minute, Sekunde.

23

void setGregorianChange(Date date)

Setzt das GregorianCalendar-Änderungsdatum.

24

void setTime(Date date)

Setzt die aktuelle Zeit dieses Calendars mit gegebenem Date.

25

void setTimeInMillis(long millis)

Setzt die aktuelle Zeit dieses Calendars aus gegebenem long-Wert.

26

void setTimeZone(TimeZone value)

Setzt die Zeitzone mit gegebenem Zeitzonenwert.

27

String toString()

Gibt String-Repräsentation dieses Kalenders zurück.

Beispiel

Live Demo
import java.util.*;
public class GregorianCalendarDemo {
  public static void main(String args[]) {
    String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
    int year;
    // Gregorian Calendar erstellen, initialisiert mit aktuellem Datum/Zeit
    GregorianCalendar gcalendar = new GregorianCalendar();
    
    // Aktuelle Zeit- und Datumsinformationen anzeigen
    System.out.print("Date: ");
    System.out.print(months[gcalendar.get(Calendar.MONTH)]);
    System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
    System.out.println(year = gcalendar.get(Calendar.YEAR));
    
    System.out.print("Time: ");
    System.out.print(gcalendar.get(Calendar.HOUR) + ":");
    System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
    System.out.println(gcalendar.get(Calendar.SECOND));
    
    // Prüfen, ob aktuelles Jahr Schaltjahr ist
    if(gcalendar.isLeapYear(year)) {
      System.out.println("The current year is a leap year");
    } else {
      System.out.println("The current year is not a leap year");
    }
  }
}

Dies produziert folgendes Ergebnis:

Ausgabe

Date: Apr 22 2009
Time: 11:25:27
The current year is not a leap year

Für eine vollständige Liste der in der Calendar-Klasse verfügbaren Konstanten verweisen Sie auf die Standard-Java-Dokumentation.

Java

  1. C# Klassen & Objekte: Fundamente für robustes OOP
  2. Aktuelles Datum und Uhrzeit in Python abrufen: Praktischer Leitfaden
  3. Java Variablen und Literale: Umfassender Leitfaden
  4. Java Ausdrücke, Anweisungen und Blöcke verstehen
  5. Java Klassen und Objekte: Praktischer Leitfaden
  6. Java abstrakte Klassen und Methoden: Ein umfassender Leitfaden
  7. Java verschachtelte und innere Klassen meistern: Typen, Beispiele und Best Practices
  8. Java Singleton-Pattern erklärt: Sichere Implementierung und Verwendung
  9. Java throw vs. throws: Exception Handling mit praktischen Beispielen meistern
  10. Java Autoboxing und Unboxing meistern: Praktische Beispiele und Best Practices