Die Anleitung zu Java Date Time

View more categories:

1- Die Klasse vom Datum, der Zeit, der Kalendar im Java (Date, time, calendar in Java)

Java bietet einige Class beziehend die Zeit und Calendar. Das ist die Liste von der Class
Die Klasse Die Bezeichnung
java.util.Date Eine Klasse vertritt das Datum und die Zeit. Die meiste Methode sind veraltet
java.util.concurrent.TimeUnit TimeUnit ist ein Enum, die Datum und die Zeit bezeichnet
java.sql.Date Eine Klasse vertritt das Datum. Die Information von der Zeit wird geschnitten. Die Klasse wird oft in JDBC benutzt
java.sql.Time Eine Klasse bezeichnet die Zeit ( die Stunden, die Minuten, die Sekundär, die Milisekundär ) und enthaltet nicht die Datum ( Tag, Monat, Jahr). Die Klasse wird oft in JDBC benutzt
java.sql.Timestamp Eine Klasse bezeichnet das Datum und die Zeit. Die Klasse wird oft in JDBC benutzt
java.util.Calendar Die Klasse bezeichnet den Kalender. Sie hat die arithmetische Methode über die Zeit, z.B den Tag einfügen oder vermindern,...
java.util.GregorianCalendar Ist die direkte Klasse von java.util.Calendar, die denTag nach dem gregorianischer Kalender bezeichnet. Es hat alle Methode aus  java.util.Calendar um die Datum und Zeit Arithmetik zu machen
java.util.TimeZone TimeZone ist eine Klasse zur Bezeichnung der Timezone. Sie ist nutzlich wenn Sie mit dem Kalender nach der Timezone arbeiten
java.text.SimpleDateFormat Die Klasse hilft Ihnen bei der Umwandlung eines String zum Date und umgekehrt

2- System.currentTimeMillis()

currentTimeMillis() ist ein static method von class System. Es bezeichnet die Zeitraum ins Mili Sekunde ab 1-1-1971 bis zum momentan
System.currentTimeMillis() ist meisten benutzt, ein Zeitraum der Arbeiten zu messen. Die method wird vor dem Beginn der Arbeit und nach der Erledigung aufgeruft
JobTimeDemo.java
package org.o7planning.tutorial.dt;

public class JobTimeDemo {

	// Das ist die Methode zur Rechnung der Summe von 1 bis 100.
	private static int sum() {
		int sum = 0;
		for (int i = 0; i <= 100; i++) {
			sum += i;
		}
		return sum;
	}

	private static void doJob(int count) {
		// Die Aufruf der Methode 'sum' mit der Mal-Anzahl, 
		// die von dem Parameter gegeben wird
		for (int i = 0; i < count; i++) {
			sum();
		}
	}

	public static void main(String[] args) {
		long millis1 = System.currentTimeMillis();

		doJob(10000);

		long millis2 = System.currentTimeMillis();

		long distance = millis2 - millis1;

		System.out.println("Distance time in milli second: " + distance);
	}
}
Das Ergebnis von dem Beispiel

3- TimeUnit

TimeUnit ist ein Enum, wird ab Java 5 eingeführt. Es hat einige Method für die Umwechslung der zeitlichen Elemente und wirklich in einigen Fälle nützlich
// Die Anzahl der Minuten
int minute = 5;

// Die Anzahl der Minuten in die Milisekunden umwandeln.
// Das ist der tradtionelle Weg.
int millisecond = minute * 60 * 1000;

// TimeUnit benutzen:
long millisecond = TimeUnit.MINUTES.toMillis(minute);
Einige Method von  TimeUnit
// In die Nano-Sekunde wechseln (nanoseconds).
public long toNanos(long d);

// In die Mikro-Sekunde wechseln (microseconds).
public long toMicros(long d);

// In die Mili-Sekunde wechseln  (milliseconds)
public long toMillis(long d);

// In die Sekunde wechseln  (seconds).
public long toSeconds(long d);

// In die Minute wechseln  (minutes).
public long toMinutes(long d);

// In die Stunde wechseln (hours).
public long toHours(long d);

// In die Tage wechseln (days).
public long toDays(long d) ;

// Vom die Einheit in die anderen Einheit durch den Parameter 'u' wechseln.
public long convert(long d, TimeUnit u);
Beispiel
TimeUnitConvertDemo.java
package org.o7planning.tutorial.timeunit;

import java.util.concurrent.TimeUnit;

public class TimeUnitConvertDemo {

	public static void main(String[] args) {

		// Die Sekunden
		long second = 125553;

		// Die Sekunden in die Minuten umwandeln
		long minute = TimeUnit.MINUTES.convert(second, TimeUnit.SECONDS);
		System.out.println("Minute " + minute);

		// Die Sekunden in die Stunden umwandeln.
		long hour = TimeUnit.HOURS.convert(second, TimeUnit.SECONDS);
		System.out.println("Hour " + hour);

		System.out.println("------");

		// Die 3 Tagen in die Minuten umwandeln.
		minute = TimeUnit.DAYS.toMinutes(3);

		System.out.println("Minute " + minute);

		// Die 3 Tagen in die Stunden umwandeln
		hour = TimeUnit.DAYS.toHours(3);

		System.out.println("Hour " + hour);
	}

}
Das Ergebnis von dem Beispiel

4- java.util.Date

java.util.Date ist einer der ersten Class für die Bezeichnung des Datum im Java. Ihre meisten Method sind leider veraltet. stattdessen benutzt man die Method von java.util.Calendar. Aber Sie können java.util.Date für die Bezeichnung des Datum benutzen
Es gibt nur 2 Constructor für Benutzung
// Ein Date Objekt zur Bezeichnung der aktuellen Zeit erstellen.
Date date1 = new Date();

// Ein  Date Objekt nach der Zeit in die Milisekunden seit 1-1-1970.
long millis = .....;
Date date2 = new Date(millis);
DateDemo.java
package org.o7planning.tutorial.date;

import java.util.Date;
import java.util.concurrent.TimeUnit;

public class DateDemo {

	public static void main(String[] args) throws InterruptedException {

		// Ein Date Objekt für die Bezeichnung der aktuellen Zeit erstellen.
		Date date1 = new Date();

		// 3 Sekunden stoppen.
		Thread.sleep(TimeUnit.SECONDS.toMillis(3));

		// Die aktuellen Zeit in Milisekunden (vom -01-1970 zum Jetzt).
		long millis = System.currentTimeMillis();
		Date date2 = new Date(millis);

		// Der Vergleich zwischen 2 Objekte date1 und date2.
		// i < 0 heißt date1 < date2
		// i = 0 heißt là date1 = date2
		// i > 0 heißt là date1 > date2
		int i = date1.compareTo(date2);

		System.out.println("date1 compareTo date2 = " + i);

		// Prüfen, ob date1 vor dem date2 steht oder nicht.
		boolean before = date1.before(date2);

		System.out.println("date1 before date2 ? " + before);

		// Prüfen, ob date1 hinter dem date2 steht oder nicht..
		boolean after = date1.after(date2);

		System.out.println("date1 after date2 ? " + after);
	}

}
Das Ergebnis von dem Beispiel

5- Date, Time, Timestamp (java.sql)

java.sql hat 3 Class über das Datum und die Zeit:
  • java.sql.Date
  • java.sql.Time
  • java.sql.Timestamp
In konkreten
  • java.sql.Date entspricht dem SQL DATE, d.h sie archiviert den Jahr, den Monat, den Tag und ignoriert die Stunde, die Minute, die Sekunde und Milisekunde. Und noch java.sql.Date bezeichnet keine Information über die Zeitzone.
  • java.sql.Time  entspricht dem SQL TIME und bezeichnet nur die Information von die Stunde, die Minute, die Sekunde und die Milisekunde.
  • java.sql.Timestamp entspricht dem SQL TIMESTAMP, es bezeichnet die NanoSekude sehr genau ( beachten Sie: java.util.Date bezeichnet nur die MiliSekunde mit der custom Genauigkeit)
Die oben Class nehmen an PreparedStatement in  JDBC API teil, Zum Beispiel: die Method  setDate, setTime, setTimestamp. oder aus ResultSet. herausnehmen

6- java.util.Calendar

Die Zusammenfassung über das Kalendar
Gregorian Calendar: Das ist der  Sonnenkalender, auch der christliche Kalender genannt, der internationale Kalender. Er ist populär am meisten. Und er wir nach Papst Gregory XIII benannt, der ihn im Jahr 1582 eingeführt
Buddhist Calendar: Das ist buddhistischer Kalender, die üblicherweise in einige südostasiatischen Ländern wie Thailand, Laos, Kambodscha und sowie Sri Lanka. Jetzt wird dieser Kalender in der buddhistischen Zeremonien verwendet. Und keine Länder verwendet diesen Kalender mehr. Diese Länder wechseln die Gregorian Calendar zu benutzen. Sie können die mehre Information über dieser Kalender bei ...   
Japanese Imperial Calendar: Das ist der traditionelle Kalender von Japan. Aber jetzt verwendet man in Japan den Sonnenkalender ( Gregorian Calendar), Aber der traditionelle Kalender wird noch inoffiziell verwendet
Calendar ist ein Class für die Bezeichnung eines Kalenderssystem
Calendar hat einige untergeordneten Class
  • GregorianCalendar
  • JapaneseImperialCalendar
  • BuddhistCalendar
Calendar ist ein Abstrakt class. Das heißt, Sie können es aus Constructor nicht erstellen. Aber es gibt 2 static method für die Erstellung des Object Calendar.
public static Calendar getInstance();

public static Calendar getInstance(TimeZone zone);

public static Calendar getInstance(Locale aLocale);

public static Calendar getInstance(TimeZone zone,Locale aLocale);
Beispiel
// Ein Objekt Calender zur Bezeichnung der aktuellen Zeit erstellen.
// Mit der Default-Locale und Default-TimeZone (von dem laufenden PC)
Calendar c = Calendar.getInstance();
Wenn Sie   Calendar.getInstance(TimeZone,Locale) verwendet, bekommen Sie eine der obengenannten untergeordneten Class. Und normalerweise ist das GregorianCalendar.

Aufruf von  Calendar.getInstance() wird das Objekt Calendar mit dem Parameter TimeZone nach Ihrem Computer und Default Locale erhaltet.

Sehen Sie die Code von class Calendar (JDK7):

Calendar (JDK7)
/**
* Gets a calendar using the default time zone and locale. The
* <code>Calendar</code> returned is based on the current time
* in the default time zone with the default locale.
*
* @return a Calendar.
*/
public static Calendar getInstance()
{
  Calendar cal = createCalendar(TimeZone.getDefaultRef(),
                                  Locale.getDefault(Locale.Category.FORMAT));
  cal.sharedZone = true;
  return cal;
}

/**
* Gets a calendar using the specified time zone and default locale.
* The <code>Calendar</code> returned is based on the current time
* in the given time zone with the default locale.
*
* @param zone the time zone to use
* @return a Calendar.
*/
public static Calendar getInstance(TimeZone zone)
{
  return createCalendar(zone, Locale.getDefault(Locale.Category.FORMAT));
}

/**
* Gets a calendar using the default time zone and specified locale.
* The <code>Calendar</code> returned is based on the current time
* in the default time zone with the given locale.
*
* @param aLocale the locale for the week data
* @return a Calendar.
*/
public static Calendar getInstance(Locale aLocale)
{
  Calendar cal = createCalendar(TimeZone.getDefaultRef(), aLocale);
  cal.sharedZone = true;
  return cal;
}

/**
* Gets a calendar with the specified time zone and locale.
* The <code>Calendar</code> returned is based on the current time
* in the given time zone with the given locale.
*
* @param zone the time zone to use
* @param aLocale the locale for the week data
* @return a Calendar.
*/
public static Calendar getInstance(TimeZone zone,
                                 Locale aLocale)
{
  return createCalendar(zone, aLocale);
}

private static Calendar createCalendar(TimeZone zone,
                                     Locale aLocale)
{
  Calendar cal = null;

  String caltype = aLocale.getUnicodeLocaleType("ca");
  if (caltype == null) {
      // Calendar type is not specified.
      // If the specified locale is a Thai locale,
      // returns a BuddhistCalendar instance.
      if ("th".equals(aLocale.getLanguage())
              && ("TH".equals(aLocale.getCountry()))) {
          cal = new BuddhistCalendar(zone, aLocale);
      } else {
          cal = new GregorianCalendar(zone, aLocale);
      }
  } else if (caltype.equals("japanese")) {
      cal = new JapaneseImperialCalendar(zone, aLocale);
  } else if (caltype.equals("buddhist")) {
      cal = new BuddhistCalendar(zone, aLocale);
  } else {
      // Unsupported calendar type.
      // Use Gregorian calendar as a fallback.
      cal = new GregorianCalendar(zone, aLocale);
  }

  return cal;
}
Einige wichtigen Method

Method get(int)

Return

get(Calendar.DAY_OF_WEEK) 1 (Calendar.SUNDAY) to 7 (Calendar.SATURDAY).
get(Calendar.YEAR) year
get(Calendar.MONTH) 0 (Calendar.JANUARY) to 11 (Calendar.DECEMBER).
get(Calendar.DAY_OF_MONTH) 1 to 31
get(Calendar.DATE) 1 to 31
get(Calendar.HOUR_OF_DAY) 0 to 23
get(Calendar.MINUTE) 0 to 59
get(Calendar.SECOND) 0 to 59
get(Calendar.MILLISECOND) 0 to 999
get(Calendar.HOUR) 0 to 11, to be used together with Calendar.AM_PM.
get(Calendar.AM_PM) 0 (Calendar.AM) or 1 (Calendar.PM).
get(Calendar.DAY_OF_WEEK_IN_MONTH) DAY_OF_MONTH 1 through 7 always correspond to DAY_OF_WEEK_IN_MONTH 1;

8 through 14 correspond to DAY_OF_WEEK_IN_MONTH 2, and so on.
get(Calendar.DAY_OF_YEAR) 1 to 366
get(Calendar.ZONE_OFFSET) GMT offset value of the time zone.
get(Calendar.ERA) Indicate AD (GregorianCalendar.AD), BC (GregorianCalendar.BC).
CalendarFieldsDemo.java
package org.o7planning.tutorial.calendar;

import java.util.Calendar;

public class CalendarFieldsDemo {

	public static void main(String[] args) {
		// Ein Default - Objekt Kalender erstellen.
		// Mit der Benutzung von Default Time zone und Locale.
		Calendar c = Calendar.getInstance();
		int year = c.get(Calendar.YEAR);

		// Die Wert von 0 bis 11 zurückgeben
		int month = c.get(Calendar.MONTH);
		int day = c.get(Calendar.DAY_OF_MONTH);
		int hour = c.get(Calendar.HOUR_OF_DAY);
		int minute = c.get(Calendar.MINUTE);
		int second = c.get(Calendar.SECOND);
		int millis = c.get(Calendar.MILLISECOND);

		System.out.println("Year: " + year);
		System.out.println("Month: " + (month + 1));
		System.out.println("Day: " + day);
		System.out.println("Hour: " + hour);
		System.out.println("Minute: " + minute);
		System.out.println("Second: " + second);
		System.out.println("Minute: " + minute);
		System.out.println("Milli Second: " + millis);

	}

}
Das Ergebnis von dem Beispiel
Einige sonstigen Method von Calendar:
void set(int calendarField, int value)
void set(int year, int month, int date)
void set(int year, int month, int date, int hour, int minute, int second)

// Einen Zeitraum auf einem Felder vom Kalender einfügen oder vermindern, 
// die nach der Regelung vom Kalender basieren.
void add(int field, int amount)

// Einen Felder vom Kalender rollen (nach oben und hinten).
// roll(): wirkt auf die anderen Felder vom Kalender nicht aus.
void roll(int calendarField, boolean up)

// Auf einen Felder eines Kalender rollen.
// roll(): wirkt auf die anderen Felder vom Kalender nicht aus.
void roll(int calendarField, int amount):

// Das Objekt Date nach der Wert vom Kalender zurückgeben.
Date getTime()

void setTime(Date date)

// Die Milisekunden vom Objekt Kalender zurückgeben
long getTimeInMills():

void setTimeInMillis(long millis)

void setTimeZone(TimeZone value)
CalendarDemo.java
package org.o7planning.tutorial.calendar;

import java.util.Calendar;

public class CalendarDemo {

	public static void showCalendar(Calendar c) {
		int year = c.get(Calendar.YEAR);

		// die Wert vom 0 - 11 zurückgeben
		int month = c.get(Calendar.MONTH);
		int day = c.get(Calendar.DAY_OF_MONTH);
		int hour = c.get(Calendar.HOUR_OF_DAY);
		int minute = c.get(Calendar.MINUTE);
		int second = c.get(Calendar.SECOND);
		int millis = c.get(Calendar.MILLISECOND);

		System.out.println(" " + year + "-" + (month + 1) + "-" + day //
				+ " " + hour + ":" + minute + ":" + second + " " + millis);
	}

	public static void main(String[] args) {
		// Ein Objekt Kalender zur Bezeichnung der aktuellen Zeit erstellen.
		// Mit der Benutzung von Default-TimeZone und Default-Locale
		Calendar c = Calendar.getInstance();

		System.out.println("First calendar info");
		showCalendar(c);

		// roll(..): einen Feld vom Kalender rollen.
		// roll(..): die anderen Felder nicht ändern.
		// Z.B: eine Stunden heranrollen (boolean up = true)
		c.roll(Calendar.HOUR_OF_DAY, true);

		System.out.println("After roll 1 hour");
		showCalendar(c);

		// roll(..): die anderen Felder vom Kalender nicht ändern .
		// eine Stunde herunterrollen (boolean up = false)
		c.roll(Calendar.HOUR_OF_DAY, false);

		System.out.println("After roll -1 hour");
		showCalendar(c);

		// add(..): die anderen Felder vom Kalender ändern ..
		// eine Stunde erhöhen (boolean up = true)
		c.add(Calendar.HOUR_OF_DAY, 1);

		System.out.println("After add 1 hour");
		showCalendar(c);

		// roll(..): die anderen Felder vom Kalender nicht ändern.
		// 30 Tag herunterrollen.
		c.roll(Calendar.DAY_OF_MONTH, -30);

		System.out.println("After roll -30 day");
		showCalendar(c);

		// add(..): die anderen Felder vom Kalender ändern können. 
		// 30 Tagen addieren
		c.add(Calendar.DAY_OF_MONTH, 30);
		System.out.println("After add 30 day");
		showCalendar(c);

	}

}
Das Ergebnis von dem Beispiel

7- Zwischen Date und Calendar umwandeln

  • Date ==> Calendar
Date now = new Date();

Calendar c = Calendar.getInstance();
c.setTime(now);
  • Calendar ==> Date
Calendar c = Calendar.getInstance();

Date date = c.getTime();
CalendarDateConversionDemo.java
package org.o7planning.tutorial.calendar;

import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.TimeUnit;

public class CalendarDateConversionDemo {

	public static void showCalendar(Calendar c) {
		int year = c.get(Calendar.YEAR);

		// Die Wert vom 0 - 11 zurückgeben
		int month = c.get(Calendar.MONTH);
		int day = c.get(Calendar.DAY_OF_MONTH);
		int hour = c.get(Calendar.HOUR_OF_DAY);
		int minute = c.get(Calendar.MINUTE);
		int second = c.get(Calendar.SECOND);
		int millis = c.get(Calendar.MILLISECOND);

		System.out.println(year + "-" + (month + 1) + "-" + day //
				+ " " + hour + ":" + minute + ":" + second + " " + millis);
	}

	public static void main(String[] args) {

		Calendar c = Calendar.getInstance();

		// year, month, day
		c.set(2000, 11, 24);

		Date date = c.getTime();

		System.out.println("Date " + date);

		long timeInMillis = System.currentTimeMillis();

		// 24 Stunden subtrahieren
		timeInMillis -= TimeUnit.HOURS.toMillis(24);

		Date date2 = new Date(timeInMillis);
		Calendar c2 = Calendar.getInstance();
		c2.setTime(date2);

		showCalendar(c2);

	}

}
Das Ergebnis von dem Beispiel

8- java.text.DateFormat & java.text.SimpleDateFormat

  • Date ==> String
Date date = new Date();

DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");

String dateString  = df.format(date);
  • String ==> Date
String dateString = "23/04/2005 23:11:59";

DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");

Date date = df.parse(dateString);
DateFormatDemo.java
package org.o7planning.tutorial.dateformat;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatDemo {

  public static void main(String[] args) throws ParseException {

      final DateFormat df1 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");

      String dateString1 = "23/04/2005 23:11:59";
      System.out.println("dateString1 = " + dateString1);

      // String ==> Date
      Date date1 = df1.parse(dateString1);

      System.out.println("date1 = " + date1);

      final DateFormat df2 = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");

      // Date ==> String.
      String dateString2 = df2.format(date1);

      System.out.println("dateString2 = " + dateString2);
  }
}
Das Ergebnis von dem Beispiel

8.1- die Format Date, Time anpassen

Custom Date Format. Lassen Sie uns einige Beispiele für das Format und die zurückgegebenen Ergebnisse sehen.
Pattern Output
dd.MM.yy 30.06.09
yyyy.MM.dd G 'at' hh:mm:ss z 2009.06.30 AD at 08:29:36 PDT
EEE, MMM d, ''yy Tue, Jun 30, '09
h:mm a 8:29 PM
H:mm 8:29
H:mm:ss:SSS 8:28:36:249
K:mm a,z 8:29 AM,PDT
yyyy.MMMMM.dd GGG hh:mm aaa 2009.June.30 AD 08:29 AM
Die Vorlagensyntax von Date Format
Symbol Meaning Presentation Example
G era designator Text AD
y year Number 2009
M month in year Text & Number July & 07
d day in month Number 10
h hour in am/pm (1-12) Number 12
H hour in day (0-23) Number 0
m minute in hour Number 30
s second in minute Number 55
S millisecond Number 978
E day in week Text Tuesday
D day in year Number 189
F day of week in month Number 2 (2nd Wed in July)
w week in year Number 27
W week in month Number 2
a am/pm marker Text PM
k hour in day (1-24) Number 24
K hour in am/pm (0-11) Number 0
z time zone Text Pacific Standard Time
' escape for text Delimiter (none)
' single quote Literal '

View more categories: