Date Es ist eine Datums- und Zeitklasse, die von jdk1.0 bereitgestellt wird und Millisekunden aus der Epoche enthält. "GMT 1. Januar 1970 00:00 bis zur heutigen Millisekunde" Die meisten Methoden sind aufgrund von Y2k-Problemen und Leistungsproblemen veraltet (@Deprecated).
Überlebende Auftragnehmer und Methoden
//Generieren
Date d1 = new Date();
Date d2 = new Date(System.currentTimeMillis() + 1);
// before,after
System.out.println(d1.after(d2));
System.out.println(d1.before(d2));
// set,get
d1.setTime(System.currentTimeMillis() + 1);
d2.setTime(System.currentTimeMillis() - 1);
System.out.println(d1.getTime());
System.out.println(d2.getTime());
y2k Problem
System.out.println(new Date(10, 1, 1));
⇒ Es wird der 1. Januar 1910 sein.
Date.java
public Date(int year, int month, int date, int hrs, int min, int sec) {
int y = year + 1900; // <-Hier
//Abkürzung
}
Calendar Eine Klasse, die den Fehler von Date.java verbessert und einen Kalender darstellt, wie der Name schon sagt.
Die Kalenderklasse enthält Felder für Jahr, Monat, Tag, Stunde, Minute, Sekunde und Millisekunde.
protected int fields[];
Eine abstrakte Klasse, implementiert mit dem Muster __ (wahrscheinlich) __Tmeplate Method, Durch die Implementierung von Unterklassen werden die Unterschiede in den weltweit verwendeten Kalendern ausgeglichen. Beispiel: Japanischer Kalender, Mondkalender
API | Überblick |
---|---|
Calendar | Vom Kalender(abstrakt)Übergeordnete Klasse |
TimeZone | Repräsentiert die Zeitzone |
Locale | Stellt eine Region dar und erzeugt verschiedene Kalender |
Zur Ausstellung
private static void show(Calendar cal) {
System.out.println("Generierter Kalender: " + cal.getClass().getName());
System.out.println(
cal.get(Calendar.YEAR) + "Jahr"
+ (cal.get(Calendar.MONTH) + 1) + "Mond"
+ cal.get(Calendar.DAY_OF_MONTH) + "Tag"
+ cal.get(Calendar.HOUR_OF_DAY) + "Zeit"
+ cal.get(Calendar.MINUTE) + "Protokoll"
+ cal.get(Calendar.SECOND) + "Sekunden");
}
Generieren
Kalender Standardkalender= Calendar.getInstance();
show(Standardkalender);
Kalender Japanischer Kalender_Standardzeitzone= Calendar.getInstance(new Locale("ja", "JP", "JP"));
show(Japanischer Kalender_Standardzeitzone);
Kalender Standardregion_JST = Calendar.getInstance(TimeZone.getTimeZone("JST"));
show(Standardbereich_JST);
Kalender Japanischer Kalender_GMT = Calendar.getInstance(TimeZone.getTimeZone("GMT"), new Locale("ja", "JP", "JP"));
show(Japanischer Kalender_GMT);
Ausgabe
Generierter Kalender: java.util.GregorianCalendar
13. November 2017 12:20:00
Generierter Kalender: java.util.JapaneseImperialCalendar
13. November 2017 12:20:00
Generierter Kalender: java.util.GregorianCalendar
13. November 2017 12:20:00
Generierter Kalender: java.util.JapaneseImperialCalendar
13. November 2017 3:20:00
Calendar <=> Date
Calendar,Datumskonvertierung
// Date to Calendar
Calendar.getInstance().setTime(new Date());
// Calendar to Date
Calendar.getInstance().getTime();
Sowohl add () als auch roll () dienen zum Erhöhen / Verringern des angegebenen Feldes (Jahr / Monat / Tag / Stunde / Minute / Sekunde / Millisekunde).
oben | Niedriger | |
---|---|---|
add() | Ändern Sie die Oberseite | Minimale Änderung |
roll() | Ändern Sie nicht die Oberseite | Minimale Änderung |
add()
Calendar calendar = Calendar.getInstance();
calendar.set(2015, Calendar.NOVEMBER, 30);
System.out.println("Ursprünglicher Wert: " + formatter.format(calendar.getTime()));
calendar.add(Calendar.MONTH, 3);
System.out.println("add : " + formatter.format(calendar.getTime()));
__2015 / 11 / 30-> Monat hinzufügen + 3-> 2016/2/29 __
roll()
Calendar calendar = Calendar.getInstance();
calendar.set(2015, Calendar.NOVEMBER, 30);
System.out.println("Ursprünglicher Wert: " + formatter.format(calendar.getTime()));
calendar.roll(Calendar.MONTH, 3);
System.out.println("roll : " + formatter.format(calendar.getTime()));
__2015 / 11 / 30-> Rollmonat + 3-> 2015/2/28 __
python
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
Calendar calendar = Calendar.getInstance();
calendar.set(2015, 15, 32);
System.out.println(formatter.format(calendar.getTime())); // 2016/05/02
calendar.setLenient(false);
calendar.set(2015, 15, 32);
// Exception in thread "main" java.lang.IllegalArgumentException: MONTH
System.out.println(formatter.format(calendar.getTime()));
Ausgabe
2016/05/02
Exception in thread "main" java.lang.IllegalArgumentException: MONTH
__ Das Hauptthema! !! __ __ Dem Paket "java.time" von JKD1.8 wurden viele Datums- und Zeitklassen hinzugefügt.
Kern-API
Kern-API für Datum und Uhrzeit | Überblick |
---|---|
TemporalAccessor | Bis heute, Uhrzeit, Versatz oder eine beliebige Kombination davon usw.SchreibgeschütztEine Schnittstelle, die den Zugriff definiert. |
Temporal | Bis heute, Uhrzeit, Versatz oder eine beliebige Kombination davon usw.Lesen/schreibenEine Schnittstelle, die den Zugriff definiert. |
TemporalAmount | __Zeitraum__Ist die Schnittstelle, die definiert. |
TemporalField | __Terminzeit__Eine Schnittstelle, die die Felder von definiert. |
TemporalUnit | __Datum Zeiteinheit__Funktionsschnittstelle, die definiert. |
TemporalAdjuster | __Strategie zur Anpassung von Datum und Uhrzeit__Funktionsschnittstelle zur Bereitstellung. |
TemporalQuery | __Strategie für den Zugriff auf Datum und Uhrzeit__Funktionsschnittstelle zur Bereitstellung. |
TemporalAccessor
TemporalAccessor-Methode | Ergebnis |
---|---|
TemporalAccessor temporalAccessor = LocalDate.of(2016, 2, 9) | 2016-02-09 |
temporalAccessor.get(ChronoField.YEAR) | 2016 |
temporalAccessor.getLong(ChronoField.MONTH_OF_YEAR) | 2 |
temporalAccessor.isSupported(ChronoField.HOUR_OF_DAY) | false |
temporalAccessor.range(ChronoField.DAY_OF_MONTH) | 1 - 29 |
temporalAccessor.query(TemporalQueries.precision()) | Days |
Instanz
mit LocalDate, die TemporalAccessor implementiert.Temporal Temporal erbt von TemporalAccessor und fügt eine Schreibschnittstelle hinzu.
Zeitliche Methode | Ergebnis |
---|---|
Temporal temporal = LocalDate.of(2016, 10, 1) | 2016-10-01 |
temporal.plus(10, ChronoUnit.MONTHS) | 2017-08-01 |
temporal.minus(Period.ofYears(1)) | 2015-10-01 |
temporal.minus(2, ChronoUnit.YEARS) | 2014-10-01 |
temporal.with(ChronoField.YEAR, 2010) | 2010-10-01 |
temporal.with(LocalDate.of(2010, 1, 10)) | 2010-01-10 |
temporal.until(LocalDate.of(2016, 1, 1), ChronoUnit.DAYS) | -274 |
ChronoUnit
addiert und subtrahiert, das TemporalUnit implementiert.LocalDate.of (2010, 1, 10)
in temporal.with (LocalDate.of (2010, 1, 10)) wird in Temporal Adjuster umgewandelt.TemporalAmount
TemporalAmount-Methode | Ergebnis |
---|---|
TemporalAmount temporalAmount = Duration.ofDays(61) | P61D |
temporalAmount.getUnits() | [Years, Months, Days] |
temporalAmount.get(ChronoUnit.DAYS) | 61 |
temporalAmount.get(ChronoUnit.MONTHS) | 0 |
temporalAmount.subtractFrom(LocalDate.of(2010, 10, 1)) | 2010-08-01 |
temporalAmount.addTo(LocalDate.of(2010, 10, 1)) | 2010-12-01 |
ChronoUnit
, das TemporalUnit implementiert.TemporalField
TemporalField-Methode | Ergebnis |
---|---|
TemporalField year = ChronoField.YEAR | Year |
year.range() | -999999999 - 999999999 |
year.getBaseUnit() | Years |
year.getDisplayName(Locale.JAPAN) | Jahr |
year.getFrom(LocalDate.of(2011, 1, 10)) | 2011 |
year.getRangeUnit() | Forever |
year.isDateBased() | true |
year.isTimeBased() | false |
Ich erhalte eine Instanz mit "ChronoField", die TemporalField implementiert.
TemporalUnit
TemporalUnit-Methode | Ergebnis |
---|---|
TemporalUnit days = ChronoUnit.DAYS | Days |
days.addTo(LocalDate.of(2011, 1, 1), 2) | 2011-01-03 |
days.getDuration() | PT24H |
days.isSupportedBy(LocalDate.now()) | true |
days.isDurationEstimated() | true |
days.isDateBased() | true |
days.isTimeBased() | false |
TemporalAdjuster&TemporalAdjusters
TemporalAdjuster-Methode | Ergebnis |
---|---|
TemporalAdjuster adjuster = LocalDate.of(2011, 1, 1) | 2011-01-01 |
adjuster.adjustInto(LocalDate.of(9999, 10, 1)) | 2011-01-01 |
Temporal Adjusters bietet eine Vielzahl von Zeitanpassungsstrategien.
TemporalAdjusters | Ergebnis |
---|---|
LocalDate.of(2011, 1, 1).with(TemporalAdjusters.lastDayOfYear()) | 2011-12-31 |
LocalDate.of(2011, 1, 1).with(TemporalAdjusters.lastDayOfMonth()) | 2011-01-31 |
TemporalQuery, TemporalQueries
Beispiel: Wie viele Tage bleiben bis zum Jahresende?
python
TemporalQuery<Long> leftDays = temporal -> {
LocalDate dayOfTarget = LocalDate.from(temporal);
LocalDate lastDayOfYear = dayOfTarget.with(TemporalAdjusters.lastDayOfYear());
Period period = dayOfTarget.until(lastDayOfYear);
return ChronoUnit.DAYS.between(dayOfTarget, lastDayOfYear);
};
System.out.println(
LocalDate.of(2015, 10, 3).query(leftDays)
);
Temporal Queries bietet eine Vielzahl von Zugriffsstrategien. Beispiel: Wie genau ist das Objekt?
LocalDate.of(2015, 10, 3).query(TemporalQueries.precision())
Instant
Bekomme Instanz | toString() |
---|---|
Instant.now() | 2017-11-14T01:47:25.392Z |
Instant.now(Clock.systemUTC()) | 2017-11-14T01:47:25.486Z |
Instant.now(Clock.system(ZoneId.of("Asia/Shanghai"))) | 2017-11-14T01:47:25.502Z |
Instant.parse("2016-10-10T10:20:30.123Z") | 2016-10-10T10:20:30.123Z |
Instant.EPOCH | 1970-01-01T00:00:00Z |
Instant.ofEpochMilli(10) | 1970-01-01T00:00:00.010Z |
Instant.ofEpochSecond(1) | 1970-01-01T00:00:01Z |
Instant.ofEpochSecond(1, 2) | 1970-01-01T00:00:01.000000002Z |
Regelmäßige Methode | Ergebnis |
---|---|
Instant instant = Instant.parse("2016-10-10T10:00:00.000Z") | 2016-10-10T10:00:00Z |
instant.toEpochMilli() | 1476093600000 |
instant.plusSeconds(30) | 2016-10-10T10:00:30Z |
instant.minusSeconds(30) | 2016-10-10T09:59:30Z |
instant.isAfter(instant) | false |
instant.isBefore(instant) | false |
instant.equals(instant) | true |
LocalDate
__ Keine Zeitzone Eine unveränderliche und threadsichere Klasse, die das Datum __ (JJJJ-MM-TT
) darstellt.
Es kann für Geburtstage verwendet werden.
Bekomme Instanz | toString() |
---|---|
LocalDate.now() | 2017-11-14 |
LocalDate.now(Clock.systemUTC()) | 2017-11-14 |
LocalDate.now(ZoneId.of("Europe/Paris")) | 2017-11-14 |
LocalDate.of(2015, 10, 1) | 2015-10-01 |
LocalDate.parse("2015 - 10 - 10") | 2015-10-10 |
LocalDate.ofYearDay(2016, 60) | 2016-02-29 |
Regelmäßige Methode | toString() |
---|---|
LocalDate.of(2010, 2, 3).getYear() | 2010 |
LocalDate.of(2010, 2, 3).getMonth() | FEBRUARY |
LocalDate.of(2010, 2, 3).getDayOfMonth() | 3 |
LocalDate.of(2010, 3, 3).getDayOfWeek() | WEDNESDAY |
LocalDate.of(2010,1,1).withMonth(3).withYear(2016).withDayOfMonth(15) | 2016-03-15 |
LocalDate.of(2010,1,1).withYear(2016).withDayOfYear(59) | 2016-02-28 |
LocalDate.of(2010,1,1).minusYears(1).minusMonths(2).minusDays(3) | 2008-10-29 |
LocalDate.of(2010,1,1).plusYears(1).plusMonths(2).plusDays(3) | 2011-03-04 |
LocalTime
__ Eine unveränderliche und thread-sichere Klasse, die keine Zeitzone darstellt __ (HH: mm: ss.SSSSSSSSS
).
Bekomme Instanz | toString() |
---|---|
LocalTime.now() | 12:06:40.790 |
LocalTime.now(Clock.systemUTC()) | 03:06:40.805 |
LocalTime.now(ZoneId.of("Europe/Paris")) | 04:06:40.868 |
LocalTime.of(6, 10, 30) | 06:10:30 |
LocalTime.parse("10:20:30") | 10:20:30 |
LocalTime.of(6, 10, 30, 999999999) | 06:10:30.999999999 |
Regelmäßige Methode | toString() |
---|---|
LocalTime.of(10, 20, 30).getHour() | 10 |
LocalTime.of(10, 20, 30).getSecond() | 30 |
LocalTime.of(10, 20, 30).getMinute() | 20 |
LocalTime.of(10, 20, 30).withHour(11).withMinute(22).withSecond(33).withNano(44) | 11:22:33.000000044 |
LocalTime.of(10, 20, 30).minusHours(1).minusMinutes(1).minusSeconds(1).minusNanos(1) | 09:19:28.999999999 |
LocalTime.of(10, 20, 30).plusHours(1).plusMinutes(1).plusSeconds(1).plusNanos(1) | 11:21:31.000000001 |
LocalDateTime
Es hat LocalDate und LocalTime intern,
__ Keine Zeitzone Datum Uhrzeit __ (JJJJ-MM-TT HH: mm: ss.SSSSSSSSS
) ist eine unveränderliche und threadsichere Klasse.
LocalDataTime.java
/**
* The date part.
*/
private final LocalDate date;
/**
* The time part.
*/
private final LocalTime time;
Bekomme Instanz | toString() |
---|---|
LocalDate.now() | 2017-11-14T12:45:41.756 |
LocalDate.now(Clock.systemUTC()) | 2017-11-14T03:45:41.756 |
LocalDate.now(ZoneId.of("Europe/Paris")) | 2017-11-14T04:45:41.834 |
LocalDateTime.of(2010, 10, 1, 10, 20, 30, 123456789) | 2010-10-01T10:20:30.123456789 |
ZonedDateTime.parse("2010-10-01T10:20:30.123456789") | 2010-10-01T10:20:30.123456789 |
Regelmäßige Methode | toString() |
---|---|
LocalDateTime.of(2010, 10, 1, 10, 20, 30).getYear() | 2010 |
LocalDateTime.of(2010, 10, 1, 10, 20, 30).getMonth() | OCTOBER |
LocalDateTime.of(2010, 10, 1, 10, 20, 30).getDayOfMonth() | 1 |
LocalDateTime.of(2010, 10, 1, 10, 20, 30).getDayOfYear() | 274 |
LocalDateTime.of(2010, 10, 1, 10, 20, 30).getHour() | 10 |
LocalDateTime.of(2010, 10, 1, 10, 20, 30).getMinute() | 20 |
LocalDateTime.of(2010, 10, 1, 10, 20, 30).getSecond() | 30 |
LocalDateTime.of(2010, 10, 1, 10, 20, 30).plusYears(1) | 2011-10-01T10:20:30 |
LocalDateTime.of(2010, 10, 1, 10, 20, 30).minusYears(1) | 2009-10-01T10:20:30 |
ZoneDateTime
__ Eine unveränderliche und thread-sichere Klasse, die __ (HH: mm: ss.SSSSSSSSS
) mit Zeitzone darstellt.
Die grundlegende Verwendung scheint mit LocalTimeDate identisch zu sein.
Bekomme Instanz | toString() |
---|---|
ZonedDateTime.now() | 2017-11-14T12:53:12.536+09:00[Asia/Tokyo] |
ZonedDateTime.now(Clock.systemUTC()) | 2017-11-14T03:53:12.536Z |
ZonedDateTime.now(ZoneId.of("Europe/Paris")) | 2017-11-14T04:53:12.598+01:00[Europe/Paris] |
ZonedDateTime.of(LocalDateTime.now(), ZoneId.of("Asia/Shanghai")) | 2017-11-14T12:53:12.614+08:00[Asia/Shanghai] |
ZonedDateTime.of(2010, 10, 1, 10, 20,30, 999, ZoneId.of("Asia/Tokyo")) | 2010-10-01T10:20:30.000000999+09:00[Asia/Tokyo] |
ZonedDateTime.parse("2010-10-01T10:20:30.000000999+09:00[Asia/Tokyo]") | 2010-10-01T10:20:30.000000999+09:00[Asia/Tokyo] |
Regelmäßige Methode | toString() |
---|---|
ZonedDateTime.of(2010, 10, 1, 10, 20, 30, 999, ZoneId.of("Asia/Tokyo")).getYear() | 2010 |
ZonedDateTime.of(2010, 10, 1, 10, 20, 30, 999, ZoneId.of("Asia/Tokyo")).getMonth() | OCTOBER |
ZonedDateTime.of(2010, 10, 1, 10, 20, 30, 999, ZoneId.of("Asia/Tokyo")).getDayOfMonth() | 1 |
ZonedDateTime.of(2010, 10, 1, 10, 20, 30, 999, ZoneId.of("Asia/Tokyo")).getDayOfYear() | 274 |
ZonedDateTime.of(2010, 10, 1, 10, 20, 30, 999, ZoneId.of("Asia/Tokyo")).getHour() | 10 |
ZonedDateTime.of(2010, 10, 1, 10, 20, 30, 999, ZoneId.of("Asia/Tokyo")).getMinute() | 20 |
ZonedDateTime.of(2010, 10, 1, 10, 20, 30, 999, ZoneId.of("Asia/Tokyo")).getSecond() | 30 |
ZonedDateTime.of(2010, 10, 1, 10, 20, 30, 999, ZoneId.of("Asia/Tokyo")).plusYears(1) | 2011-10-01T10:20:30.000000999+09:00[Asia/Tokyo] |
ZonedDateTime.of(2010, 10, 1, 10, 20, 30, 999, ZoneId.of("Asia/Tokyo")).minusYears(1) | 2009-10-01T10:20:30.000000999+09:00[Asia/Tokyo] |
OffsetDateTime Es ist eine Kombination aus LocalDateTime und Offset.
https://docs.oracle.com/javase/jp/8/docs/api/java/time/OffsetDateTime.html "OffsetDateTime, ZonedDateTime und Instant speichern alle Zeitpunkte in Zeitreihen mit einer Genauigkeit von Nanosekunden. Instant ist der einfachste und stellt einfach den Moment dar. OffsetDateTime fügt den Offset von UTC / Greenwich zum Moment hinzu. Außerdem können Sie das lokale Datum und die lokale Uhrzeit abrufen. ZonedDateTime fügt eine vollständige Zeitzonenregel hinzu. "
OffsetDateTime.java
/**
* The local date-time.
*/
private final LocalDateTime dateTime;
/**
* The offset from UTC/Greenwich.
*/
private final ZoneOffset offset;
YearMonth、MonthDay
YearMonth: Eine unveränderliche und thread-sichere Klasse, die "JJJJ-MM" darstellt. MonthDay: Eine unveränderliche und thread-sichere Klasse, die "mm-dd" darstellt.
Holen Sie sich die YearMonth-Instanz | toString() |
---|---|
YearMonth.now() | 2017-11 |
YearMonth.now(Clock.systemUTC()) | 2017-11 |
YearMonth.now(ZoneId.of("Europe/Paris")) | 2017-11 |
YearMonth.of(2011, 10) | 2011-10 |
YearMonth.parse("2012-10") | 2012-10 |
YearMonth reguläre Methode | toString() |
---|---|
YearMonth.of(2011, 10).getYear() | 2011 |
YearMonth.of(2011, 10).getMonth() | OCTOBER |
YearMonth.of(2011, 10).plusMonths(2) | 2011-12 |
YearMonth.of(2011, 10).minusYears(3) | 2008-10 |
Holen Sie sich die MonthDay-Instanz | toString() |
---|---|
MonthDay.now() | --11-14 |
MonthDay.now(Clock.systemUTC()) | --11-14 |
MonthDay.now(ZoneId.of("Europe/Paris")) | --11-14 |
MonthDay.of(5, 10) | --05-10 |
MonthDay.parse("--05-10") | --05-10 |
MonthDay reguläre Methode | toString() |
---|---|
MonthDay.of(5, 10).getMonth() | MAY |
MonthDay.of(5, 10).getDayOfMonth() | 10 |
MonthDay.of(5, 10).with(Month.JANUARY).withDayOfMonth(20) | --01-20 |
Year Jahr: Eine unveränderliche und thread-sichere Klasse, die "JJJJ" darstellt.
Bekomme Instanz | toString() |
---|---|
Year.now() | 2017 |
Year.now(Clock.systemUTC()) | 2017 |
Year.now(ZoneId.of("Europe/Paris")) | 2017 |
Year.of(2011) | 2011 |
Year.parse("2012") | 2012 |
Regelmäßige Methode | toString() |
---|---|
Year.of(2011).getValue() | 2011 |
Year.of(2011).plusYears(3) | 2014 |
Year.of(2011).minusYears(10) | 2001 |
Month、DayOfWeek Monat, eine Aufzählung, die den Monat darstellt DayOfWeek, eine Aufzählung von Tagen
Monatsinstanz abrufen | toString() |
---|---|
Month.of(10) | OCTOBER |
Month.valueOf("JANUARY") | JANUARY |
Month.FEBRUARY | FEBRUARY |
Monat reguläre Methode | toString() |
---|---|
Month.of(1).getValue() | 1 |
Month.of(12).plus(3) | MARCH |
Month.of(3).minus(4) | NOVEMBER |
Holen Sie sich die DayOfWeek-Instanz | toString() |
---|---|
DayOfWeek.of(1) | MONDAY |
DayOfWeek.valueOf("FRIDAY") | FRIDAY |
DayOfWeek.FRIDAY | FRIDAY |
DayOfWeek reguläre Methode | toString() |
---|---|
DayOfWeek.of(1).getValue() | 1 |
DayOfWeek.of(1).plus(7) | MONDAY |
DayOfWeek.of(1).minus(7) | MONDAY |
Clock __ Eine Klasse, die die Systemzeit __ mit einer Zeitzone darstellt. Die Datums- und Zeitklasse now () wird basierend auf dieser Uhr generiert.
Clock clockDefault = Clock.systemDefaultZone();
UTC Uhr
Clock clockUTC = Clock.systemUTC();
Zeitzonenbezeichnung Uhr
Clock clockParis= Clock.system(ZoneId.of("Europe/Paris"));
Die Zeit schreitet voran
Clock clock = Clock.systemDefaultZone();
System.out.println(clock.instant());
Thread.sleep(1000 * 2);
System.out.println(clock.instant());
2017-11-13T11:41:27.548Z
2017-11-13T11:41:29.551Z
Uhr, die gestoppt ist
Clock fixedClock = Clock.fixed(Instant.now(), ZoneId.of("Asia/Tokyo"));
System.out.println("fixed clock : " + fixedClock.instant());
Thread.sleep(1000 * 2);
System.out.println("fixed clock : " + fixedClock.instant());
Ergebnis
fixed clock : 2017-11-13T11:46:01.224Z
fixed clock : 2017-11-13T11:46:01.224Z
__⇒ Die Uhr läuft nicht vor. __ __
Zweite Uhr
Clock secondsTickClock = Clock.tickSeconds(ZoneId.of("Asia/Tokyo"));
System.out.println("seconds tick clock : " + secondsTickClock.instant());
Thread.sleep(1000 * 2);
System.out.println("seconds tick clock : " + secondsTickClock.instant());
Ergebnis
seconds tick clock : 2017-11-13T11:52:20Z
seconds tick clock : 2017-11-13T11:52:22Z
__ ⇒ Halten Sie in Sekunden nicht weniger als Sekunden __
Minutenuhr
Clock minutesTickClock = Clock.tickMinutes(ZoneId.of("Asia/Tokyo"));
System.out.println("minutes tick clock : " + minutesTickClock.instant());
Thread.sleep(1000 * 2);
System.out.println("minutes tick clock : " + minutesTickClock.instant());
Ergebnis
minutes tick clock : 2017-11-13T11:52:00Z
minutes tick clock : 2017-11-13T11:52:00Z
__ ⇒ Minuten, nicht weniger als Sekunden halten __
Uhr um die angegebene Zeit vorgerückt
Clock nowClock = Clock.systemDefaultZone();
Clock offsetClock = Clock.offset(nowClock, Duration.ofDays(1));
System.out.println("nowClock : " + nowClock.instant());
System.out.println("offsetClock : " + offsetClock.instant());
Ergebnis
nowClock : 2017-11-13T11:58:25.647Z
offsetClock : 2017-11-14T11:58:25.647Z
__⇒ Uhr einen Tag voraus __
TemporalAmount Duration Eine unveränderliche und thread-sichere Klasse, die die Zeitdauer ausdrückt.
Bekomme Instanz | Ergebnis |
---|---|
Duration.ofDays(2) | PT48H |
Duration.ofHours(3) | PT3H |
Duration.ofMinutes(40) | PT40M |
Duration.parse("PT15M") | PT15M |
Regelmäßige Methode | Ergebnis |
---|---|
Duration.ofDays(3).getUnits() | [Seconds, Nanos] |
Duration.ofDays(3).toHours() | 72 |
Duration.ofDays(3).toMinutes() | 4320 |
DDuration.ofDays(3).toMillis() | 259200000 |
Duration.ofDays(3).plusDays(1) | PT96H |
Duration.ofDays(3).plusDays(-1) | PT48H |
Period Eine unveränderliche und thread-sichere Klasse, die die Zeitdauer ausdrückt.
Bekomme Instanz | Ergebnis |
---|---|
Period.ofDays(2) | P2D |
Period.ofMonths(3) | P3M |
Period.ofYears(4) | P4Y |
Period.parse("P4Y") | P4Y |
Regelmäßige Methode | Ergebnis |
---|---|
Period.ofYears(3).getDays() | 0 |
Period.ofYears(3).getMonths() | 0 |
Period.ofYears(3).getYears() | 3 |
Period.ofYears(3).getUnits() | [Years, Months, Days] |
Period.ofDays(3).plusDays(1) | P4D |
Period.ofDays(3).minusDays(1) | P2D |
ZoneId Klasse, die die Zeitzone ausdrückt
python
ZoneId.systemDefault();
ZoneId.getAvailableZoneIds();
ZoneId.of("Asia/Tokyo");
Konvertierungsmethode | Konvertierte Klasse |
---|---|
MonthDay.of(10, 1).atYear(2015) | java.time.LocalDate |
YearMonth.of(2015, 10).atDay(30) | java.time.LocalDate |
YearMonth.of(2015, 10).atEndOfMonth() | java.time.LocalDate |
LocalTime.now().atDate(LocalDate.now()) | 2017-11-14T14:41:28.728 |
LocalDate.now().atTime(10, 20) | java.time.LocalDateTime |
LocalDate.now().atStartOfDay() | java.time.LocalDateTime |
LocalDate.now().atStartOfDay(ZoneId.of("Asia/Shanghai")) | java.time.ZonedDateTime |
LocalDateTime.now().atZone(ZoneId.of("Asia/Shanghai")) | java.time.ZonedDateTime |
LocalDateTime.now().toLocalDate() | java.time.LocalDate |
LocalDateTime.now().toLocalTime() | java.time.LocalTime |
LocalDateTime.now().toInstant(ZoneOffset.UTC) | java.time.Instant |
ZonedDateTime.now().toLocalDateTime() | java.time.LocalDateTime |
ZonedDateTime.now().toLocalDate() | java.time.LocalDate |
ZonedDateTime.now().toInstant() | java.time.Instant |
Instant.now().atZone(ZoneId.of("Asia/Shanghai")) | java.time.ZonedDateTime |
Instant.now().atOffset(ZoneOffset.UTC) | java.time.OffsetDateTime |
DateFormat Es wird von jdk1.0 ?? bereitgestellt und das Format wird durch die folgenden zwei Elemente gesteuert.
Willst du es nicht mehr benutzen? !!
Instanzgenerierung & Format&parse | toString() |
---|---|
DateFormat.getDateInstance(DateFormat.FULL, Locale.JAPAN).format(new Date()) | 14. November 2017 |
DateFormat.getTimeInstance(DateFormat.FULL, Locale.US).format(new Date()) | 4:56:05 PM JST |
DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, Locale.CHINA).format(new Date()) | 2017-11-14 Uhr 4:56 |
DateFormat.getDateInstance(DateFormat.FULL, Locale.JAPAN).parse("14. November 2017") | Tue Nov 14 00:00:00 JST 2017 |
DateFormat.getTimeInstance(DateFormat.FULL, Locale.US).parse("4:52:25 PM JST") | Thu Jan 01 16:52:25 JST 1970 |
DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, Locale.CHINA).parse("2017-11-14 Uhr 4:52") | Tue Nov 14 16:52:00 JST 2017 |
SimpleDateFormat Es ist ein bekannter Datumsformatierer! !! Eine Unterklasse von DateFormmat, die das Format mit einer Musterzeichenfolge bestimmt.
Instanzgenerierung & Format&parse | toString() |
---|---|
new SimpleDateFormat("yyyy-MM-dd").format(new Date()) | 2017-11-14 |
new SimpleDateFormat("JJJJ Jahr MM Monat TT HH Stunde mm Minute SS Sekunde").format(new Date()) | 14. November 2017, 17:24:11 Uhr |
new SimpleDateFormat("yyyy-MM-dd").parse("2017-11-14") | Tue Nov 14 00:00:00 JST 2017 |
Zeitzone kann eingestellt werden
SimpleDateFormat s1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat s2 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
s2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
System.out.println(s1.format(new Date()));
System.out.println(s2.format(new Date()));
Ausgabe
2017/11/14 17:26:53
2017/11/14 16:26:53
DateTimeFormatter Es wurde ab JKD1.8 zusammen mit der Datums- und Zeitklasse hinzugefügt. Es befindet sich im Paket "java.time.format" und ist wie eine Kombination aus DateFormat und SimpleDateFormat?
format
DateTimeFormatter[] formatters = {
DateTimeFormatter.ISO_DATE,
DateTimeFormatter.ISO_LOCAL_DATE,
DateTimeFormatter.ISO_LOCAL_DATE_TIME,
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.MEDIUM),
DateTimeFormatter.ofPattern("Gyyyy/MM/dd HH::mm:ss.SSS")
};
LocalDateTime localDateTime = LocalDateTime.now();
Arrays.stream(formatters)
.forEach(
formatter ->
System.out.println(formatter.format(localDateTime))
);
Arrays.stream(formatters)
.forEach(
formatter ->
System.out.println(localDateTime.format(formatter))
);
parse
//Terminzeit#parse
LocalDate.parse("2015/10/10", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
// DateTimeFormatter#parse
DateTimeFormatter.ofPattern("yyyy/MM/dd").parse("2015/10/10");
DateTimeFormatter.ofPattern("yyyy/MM/dd").parse("2015/10/10", TemporalQueries.localDate());
Unter dem Gesichtspunkt der Lesbarkeit wird "Datum / Uhrzeit # Analyse" empfohlen.
Recommended Posts