Date C'est une classe de date et d'heure fournie par jdk1.0 et contient des millisecondes à partir de l'époque. "GMT 1 janvier 1970 00:00 à la milliseconde actuelle" La plupart des méthodes sont obsolètes (@Deprecated) en raison de problèmes liés à l'an 2000 et de performances.
Entrepreneurs survivants et méthodes
//produire
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());
problème de l'an 2000
System.out.println(new Date(10, 1, 1));
⇒ Ce sera le 1er janvier 1910.
Date.java
public Date(int year, int month, int date, int hrs, int min, int sec) {
int y = year + 1900; // <-ici
//Abréviation
}
Calendar Une classe qui améliore le défaut de Date.java et représente un calendrier comme son nom l'indique.
La classe Calendar a des champs pour l'année, le mois, le jour, l'heure, la minute, la seconde et la milliseconde.
protected int fields[];
Une classe abstraite, implémentée avec le modèle __ (probablement) __Tmeplate Method, En implémentant des sous-classes, les différences dans les calendriers utilisés dans le monde sont absorbées. Exemple: calendrier japonais, calendrier lunaire
API | Aperçu |
---|---|
Calendar | Du calendrier(abstrait)Classe parent |
TimeZone | Représente le fuseau horaire |
Locale | Représente une région et produit différents calendriers |
Pour l'affichage
private static void show(Calendar cal) {
System.out.println("Calendrier généré: " + cal.getClass().getName());
System.out.println(
cal.get(Calendar.YEAR) + "Année"
+ (cal.get(Calendar.MONTH) + 1) + "Mois"
+ cal.get(Calendar.DAY_OF_MONTH) + "journée"
+ cal.get(Calendar.HOUR_OF_DAY) + "Temps"
+ cal.get(Calendar.MINUTE) + "Minutes"
+ cal.get(Calendar.SECOND) + "Secondes");
}
produire
Calendrier Calendrier par défaut= Calendar.getInstance();
show(Calendrier par défaut);
Calendrier calendrier japonais_Fuseau horaire par défaut= Calendar.getInstance(new Locale("ja", "JP", "JP"));
show(Calendrier japonais_Fuseau horaire par défaut);
Région par défaut du calendrier_JST = Calendar.getInstance(TimeZone.getTimeZone("JST"));
show(Région par défaut_JST);
Calendrier calendrier japonais_GMT = Calendar.getInstance(TimeZone.getTimeZone("GMT"), new Locale("ja", "JP", "JP"));
show(Calendrier japonais_GMT);
production
Calendrier généré: java.util.GregorianCalendar
13 novembre 2017 12:20:00
Calendrier généré: java.util.JapaneseImperialCalendar
13 novembre 2017 12:20:00
Calendrier généré: java.util.GregorianCalendar
13 novembre 2017 12:20:00
Calendrier généré: java.util.JapaneseImperialCalendar
13 novembre 2017 3:20:00
Calendar <=> Date
Calendar,Conversion de date
// Date to Calendar
Calendar.getInstance().setTime(new Date());
// Calendar to Date
Calendar.getInstance().getTime();
Les deux add () et roll () servent à augmenter / diminuer le champ spécifié (année / mois / jour / heure / minute / seconde / milliseconde).
Haut | Inférieur | |
---|---|---|
add() | Changer le haut | Changement minimal |
roll() | Ne changez pas le haut | Changement minimal |
add()
Calendar calendar = Calendar.getInstance();
calendar.set(2015, Calendar.NOVEMBER, 30);
System.out.println("valeur initiale: " + formatter.format(calendar.getTime()));
calendar.add(Calendar.MONTH, 3);
System.out.println("add : " + formatter.format(calendar.getTime()));
__2015 / 11 / 30-> ajouter le mois + 3-> 2016/2/29 __
roll()
Calendar calendar = Calendar.getInstance();
calendar.set(2015, Calendar.NOVEMBER, 30);
System.out.println("valeur initiale: " + formatter.format(calendar.getTime()));
calendar.roll(Calendar.MONTH, 3);
System.out.println("roll : " + formatter.format(calendar.getTime()));
__2015 / 11 / 30-> mois roll + 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()));
production
2016/05/02
Exception in thread "main" java.lang.IllegalArgumentException: MONTH
2015/15 / 32-> 2016/05 / 02
__ Le sujet principal! !! __
De nombreuses classes de date et d'heure ont été ajoutées au package java.time
de JKD1.8.
API principale
API principale de date et d'heure | Aperçu |
---|---|
TemporalAccessor | À la date, à l'heure, au décalage ou à toute combinaison de ceux-ci, etc.Lecture seulementUne interface qui définit l'accès. |
Temporal | À la date, à l'heure, au décalage ou à toute combinaison de ceux-ci, etc.Lis/écrireUne interface qui définit l'accès. |
TemporalAmount | __Quantité de temps__Est l'interface qui définit. |
TemporalField | __Date heure__Une interface qui définit les champs de. |
TemporalUnit | __Unité de date et heure__Interface fonctionnelle qui définit. |
TemporalAdjuster | __Stratégie d'ajustement de la date et de l'heure__Interface fonctionnelle pour fournir. |
TemporalQuery | __Stratégie d'accès à la date et à l'heure__Interface fonctionnelle pour fournir. |
TemporalAccessor
Méthode TemporalAccessor | résultat |
---|---|
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 |
TemporalQueries.zoneId ()
renvoyé pour obtenir la précision
.Temporal Temporal hérite de TemporalAccessor et ajoute une interface d'écriture.
Méthode temporelle | résultat |
---|---|
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 |
LocalDate.of (2010, 1, 10)
in temporal.with (LocalDate.of (2010, 1, 10)) est converti en Ajusteur temporel.TemporalAmount
Méthode TemporalAmount | résultat |
---|---|
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
qui implémente TemporalUnit.TemporalField
Méthode TemporalField | résultat |
---|---|
TemporalField year = ChronoField.YEAR | Year |
year.range() | -999999999 - 999999999 |
year.getBaseUnit() | Years |
year.getDisplayName(Locale.JAPAN) | Année |
year.getFrom(LocalDate.of(2011, 1, 10)) | 2011 |
year.getRangeUnit() | Forever |
year.isDateBased() | true |
year.isTimeBased() | false |
J'obtiens une instance avec ChronoField
qui implémente TemporalField.
TemporalUnit
Méthode TemporalUnit | résultat |
---|---|
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
Méthode TemporalAdjuster | résultat |
---|---|
TemporalAdjuster adjuster = LocalDate.of(2011, 1, 1) | 2011-01-01 |
adjuster.adjustInto(LocalDate.of(9999, 10, 1)) | 2011-01-01 |
Temporal Adjusters propose une variété de stratégies d'ajustement du temps.
TemporalAdjusters | résultat |
---|---|
LocalDate.of(2011, 1, 1).with(TemporalAdjusters.lastDayOfYear()) | 2011-12-31 |
LocalDate.of(2011, 1, 1).with(TemporalAdjusters.lastDayOfMonth()) | 2011-01-31 |
TemporalQuery, TemporalQueries
Exemple: Combien de jours reste-t-il jusqu'à la fin de l'année?
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)
);
Les requêtes temporelles offrent une variété de stratégies d'accès. Exemple: quelle est la précision de l'objet?
LocalDate.of(2015, 10, 3).query(TemporalQueries.precision())
Instant
Obtenir l'instance | 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 |
Méthode régulière | résultat |
---|---|
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
__ Aucun fuseau horaire Une classe immuable et thread-safe qui représente la date __ (aaaa-mm-jj
).
Il peut être utilisé pour les anniversaires.
Obtenir l'instance | 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 |
Méthode régulière | 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
__ Une classe immuable et thread-safe qui ne représente aucun fuseau horaire __ (HH: mm: ss.SSSSSSSSS
).
Obtenir l'instance | 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 |
Méthode régulière | 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
Il a LocalDate et LocalTime en interne,
__ Aucun fuseau horaire Date Heure __ (aaaa-mm-jj HH: mm: ss.SSSSSSSSS
) est une classe immuable et thread-safe.
LocalDataTime.java
/**
* The date part.
*/
private final LocalDate date;
/**
* The time part.
*/
private final LocalTime time;
Obtenir l'instance | 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 |
Méthode régulière | 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
__ Une classe immuable et thread-safe qui représente __ (HH: mm: ss.SSSSSSSSS
) avec le fuseau horaire.
L'utilisation de base semble être la même que LocalTimeDate.
Obtenir l'instance | 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] |
Méthode régulière | 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 C'est une combinaison de LocalDateTime et Offset.
https://docs.oracle.com/javase/jp/8/docs/api/java/time/OffsetDateTime.html "OffsetDateTime, ZonedDateTime et Instant enregistrent tous les instants dans des séries chronologiques avec une précision de l'ordre de la nanoseconde. Instant est le plus simple et représente simplement l'instant. OffsetDateTime ajoute le décalage de UTC / Greenwich à l'instant. Et vous permet d'obtenir la date / heure locale. ZonedDateTime ajoute une règle de fuseau horaire complète. "
OffsetDateTime.java
/**
* The local date-time.
*/
private final LocalDateTime dateTime;
/**
* The offset from UTC/Greenwich.
*/
private final ZoneOffset offset;
YearMonth、MonthDay
YearMonth: Une classe immuable et thread-safe qui représente yyyy-mm
.
MonthDay: Une classe immuable et thread-safe qui représente mm-dd
.
Obtenir l'instance YearMonth | 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 |
Méthode régulière YearMonth | 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 |
Obtenir l'instance MonthDay | 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 |
Méthode régulière MonthDay | 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
Year: Une classe immuable et thread-safe qui représente yyyy
.
Obtenir l'instance | toString() |
---|---|
Year.now() | 2017 |
Year.now(Clock.systemUTC()) | 2017 |
Year.now(ZoneId.of("Europe/Paris")) | 2017 |
Year.of(2011) | 2011 |
Year.parse("2012") | 2012 |
Méthode régulière | toString() |
---|---|
Year.of(2011).getValue() | 2011 |
Year.of(2011).plusYears(3) | 2014 |
Year.of(2011).minusYears(10) | 2001 |
Month、DayOfWeek Month, une énumération représentant le mois DayOfWeek, une énumération de jours
Obtenir l'instance du mois | toString() |
---|---|
Month.of(10) | OCTOBER |
Month.valueOf("JANUARY") | JANUARY |
Month.FEBRUARY | FEBRUARY |
Méthode régulière du mois | toString() |
---|---|
Month.of(1).getValue() | 1 |
Month.of(12).plus(3) | MARCH |
Month.of(3).minus(4) | NOVEMBER |
Obtenir l'instance DayOfWeek | toString() |
---|---|
DayOfWeek.of(1) | MONDAY |
DayOfWeek.valueOf("FRIDAY") | FRIDAY |
DayOfWeek.FRIDAY | FRIDAY |
Méthode régulière DayOfWeek | toString() |
---|---|
DayOfWeek.of(1).getValue() | 1 |
DayOfWeek.of(1).plus(7) | MONDAY |
DayOfWeek.of(1).minus(7) | MONDAY |
Clock __ Une classe qui représente l'heure système __ avec un fuseau horaire. La classe de date et d'heure now () est générée en fonction de cette horloge.
Clock clockDefault = Clock.systemDefaultZone();
Horloge UTC
Clock clockUTC = Clock.systemUTC();
Horloge de désignation de fuseau horaire
Clock clockParis= Clock.system(ZoneId.of("Europe/Paris"));
Le temps avance
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
Horloge qui est arrêtée
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());
résultat
fixed clock : 2017-11-13T11:46:01.224Z
fixed clock : 2017-11-13T11:46:01.224Z
__⇒ L'horloge n'avance pas. __
Deuxième horloge
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());
résultat
seconds tick clock : 2017-11-13T11:52:20Z
seconds tick clock : 2017-11-13T11:52:22Z
__ ⇒ En quelques secondes, ne tenez pas moins de secondes __
Horloge minute
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());
résultat
minutes tick clock : 2017-11-13T11:52:00Z
minutes tick clock : 2017-11-13T11:52:00Z
__ ⇒ Minutes, ne tenez pas moins de secondes __
Horloge avancée de l'heure spécifiée
Clock nowClock = Clock.systemDefaultZone();
Clock offsetClock = Clock.offset(nowClock, Duration.ofDays(1));
System.out.println("nowClock : " + nowClock.instant());
System.out.println("offsetClock : " + offsetClock.instant());
résultat
nowClock : 2017-11-13T11:58:25.647Z
offsetClock : 2017-11-14T11:58:25.647Z
__⇒ Horloge un jour à l'avance __
TemporalAmount Duration Une classe immuable et thread-safe qui exprime la durée.
Obtenir l'instance | résultat |
---|---|
Duration.ofDays(2) | PT48H |
Duration.ofHours(3) | PT3H |
Duration.ofMinutes(40) | PT40M |
Duration.parse("PT15M") | PT15M |
Méthode régulière | résultat |
---|---|
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 Une classe immuable et thread-safe qui exprime la durée.
Obtenir l'instance | résultat |
---|---|
Period.ofDays(2) | P2D |
Period.ofMonths(3) | P3M |
Period.ofYears(4) | P4Y |
Period.parse("P4Y") | P4Y |
Méthode régulière | résultat |
---|---|
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 Classe qui exprime le fuseau horaire
python
ZoneId.systemDefault();
ZoneId.getAvailableZoneIds();
ZoneId.of("Asia/Tokyo");
Méthode de conversion | Classe convertie |
---|---|
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 Il est fourni par jdk1.0 ??, et le format est contrôlé par les deux éléments suivants.
N'allez-vous plus l'utiliser? !!
Génération et format d'instance&parse | toString() |
---|---|
DateFormat.getDateInstance(DateFormat.FULL, Locale.JAPAN).format(new Date()) | 14 novembre 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 h 4:56 |
DateFormat.getDateInstance(DateFormat.FULL, Locale.JAPAN).parse("14 novembre 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 h 4:52") | Tue Nov 14 16:52:00 JST 2017 |
SimpleDateFormat C'est un formateur de date familier! !! Une sous-classe de DateFormmat qui détermine le format avec une chaîne de modèle.
Génération et format d'instance&parse | toString() |
---|---|
new SimpleDateFormat("yyyy-MM-dd").format(new Date()) | 2017-11-14 |
new SimpleDateFormat("aaaa année MM mois jj HH heure mm minute ss seconde").format(new Date()) | 14 novembre 2017 17:24:11 |
new SimpleDateFormat("yyyy-MM-dd").parse("2017-11-14") | Tue Nov 14 00:00:00 JST 2017 |
Le fuseau horaire peut être défini
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()));
production
2017/11/14 17:26:53
2017/11/14 16:26:53
DateTimeFormatter
Il a été ajouté à partir de JKD1.8 avec la classe de date et d'heure.
C'est dans le paquet java.time.format
, et c'est comme une combinaison de DateFormat et 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
//Date Heure#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());
Du point de vue de la lisibilité, date time # parse
est recommandé.
Recommended Posts