Étude de Java 8 (API de date dans le package java.time)

Etudier l'API de date du package java.time. J'ai essayé diverses choses de manière appropriée. La source suivante.

package java8.dateapi;

import java.time.LocalDateTime;
import java.time.YearMonth;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;

/**
 * java.Etudier l'API de date du package de temps
 * @author komikcomik
 *
 */
public class DateApiStudy {

	public static void main(String[] args) {

		/*Essayez d'obtenir l'heure actuelle pour le moment*/
		System.out.println("---------------------Vérification 1 Affichage approprié en utilisant l'heure actuelle-----------------------");
		ZonedDateTime zonedDateTime = ZonedDateTime.now();
		System.out.println("Sortie pour le moment [" + zonedDateTime + "】"); //Sortie sans réfléchir

		/*Année, mois, jour, heure, minute, seconde, milliseconde, etc.*/
		System.out.println("Année 【" + zonedDateTime.getYear() + "】");
		System.out.println("Mois 【" + zonedDateTime.getMonthValue() + "】"); // getMonth()Notez que OCTOBRE sera retourné.
		System.out.println("Journée 【" + zonedDateTime.getDayOfMonth() + "】");
		System.out.println("Temps 【" + zonedDateTime.getHour() + "】");
		System.out.println("Minutes [" + zonedDateTime.getMinute() + "】");
		System.out.println("Secondes [" + zonedDateTime.getSecond() + "】");
		System.out.println("Millimètres ou moins [" + zonedDateTime.getNano() + "】");
		System.out.println("Seulement milliseconde [" + zonedDateTime.getLong(ChronoField.MILLI_OF_SECOND) + "】");
		System.out.println("Si vous souhaitez afficher quelque chose comme l'heure UTC + [" + zonedDateTime.getOffset() + "】");

		/*Faire une heure spécifiée*/
		System.out.println("---------------------Vérification 2 Faites une heure spécifiée-----------------------");
		ZonedDateTime shiteiTime = ZonedDateTime.of(2017, 10, 19, 16, 58, 59, 123456789, ZoneId.systemDefault());
		System.out.println("Sortie 2 pour le moment [" + shiteiTime + "】"); //Sortie sans réfléchir

		/*Convertir en chaîne standard*/
		System.out.println("---------------------Vérification 3-----------------------");
		DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS");
		DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.nnnnnnnnn");
		System.out.println("Formez jusqu'à la milliseconde et éteignez [" + shiteiTime.format(dtf1) + "】");
		System.out.println("Formez en nanosecondes et éteignez [" + shiteiTime.format(dtf2) + "】");

		/*Convertir de l'objet String en objet LocalDateTime*/
		System.out.println("---------------------Validation 4 Conversion de String en LocalDateTime-----------------------");
		String dateStr = "2017/10/19 16:58:59.123456789";
		LocalDateTime ldt = LocalDateTime.parse(dateStr, dtf2);
		if (ldt.equals(shiteiTime.toLocalDateTime())) {
			System.out.println("Correspond à ce qui a été converti de String en LocalDateTime=" + ldt);
		} else {
			System.out.println("Ne correspond pas à ce qui a été converti de String en LocalDateTime");
		}

		/*Convertir de l'objet String en objet ZonedDateTime*/
		System.out.println("---------------------Validation 5 Conversion de chaîne en ZonedDateTime-----------------------");
		String dateStrWithTimeZone = "2017/10/19 16:58:59.123456789 JST";
		DateTimeFormatter dtfWithTimeZone = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.nnnnnnnnn zzz");
		ZonedDateTime zdt = ZonedDateTime.parse(dateStrWithTimeZone, dtfWithTimeZone);
		if (zdt.equals(shiteiTime)) {
			System.out.println("Correspond à ce qui a été converti de String en ZonedDateTime=" + zdt);
		} else {
			System.out.println("Ne correspond pas à ce qui a été converti de String en ZonedDateTime");
		}

		/* java.util.Convertir en date*/
		System.out.println("---------------------Vérification 5 java.util.Convertir en date-----------------------");
		Date date = Date.from(shiteiTime.toInstant());
		System.out.println(date);

		/*Calculer à la fin du mois*/
		System.out.println("---------------------Vérification 6 Calculez la fin du mois avec Année Mois-----------------------");
		YearMonth ym = YearMonth.from(ldt);
		System.out.println("Fin du mois=" + ym.atEndOfMonth());
		ym = YearMonth.from(ldt.minusMonths(1));
		System.out.println("Fin du mois dernier=" + ym.atEndOfMonth());
		ym = YearMonth.from(ldt.plusMonths(1));
		System.out.println("Fin du mois prochain=" + ym.atEndOfMonth());

		System.out.println("---------------------Vérification 7 Calculez le début et la fin du mois avec des ajusteurs temporels-----------------------");
		System.out.println(ldt.with(TemporalAdjusters.firstDayOfMonth()));
		System.out.println(ldt.with(TemporalAdjusters.lastDayOfMonth()));
	}
}

Ci-dessous, le résultat de l'exécution


---------------------Vérification 1 Affichage approprié en utilisant l'heure actuelle-----------------------
Résultats pour le moment [2017-10-19T17:59:27.773+09:00[Asia/Tokyo]】
Année [2017]
Mois [10]
Soleil [19]
Heure [17]
Minute [59]
Secondes [27]
Millimètres ou moins [773000000]
Seulement milliseconde [773]
Si vous souhaitez afficher quelque chose comme l'heure UTC + [+09:00】
---------------------Vérification 2 Faites une heure spécifiée-----------------------
Produit 2 pour le moment [2017-10-19T16:58:59.123456789+09:00[Asia/Tokyo]】
---------------------Vérification 3-----------------------
Mise en forme en milliseconde et sortie [2017/10/19 16:58:59.123】
Façonner en nanosecondes et éteindre [2017/10/19 16:58:59.123456789】
---------------------Validation 4 Conversion de String en LocalDateTime-----------------------
Correspond à ce qui a été converti de String en LocalDateTime=2017-10-19T16:58:59.123456789
---------------------Validation 5 Conversion de chaîne en ZonedDateTime-----------------------
Correspond à ce qui a été converti de String en ZonedDateTime=2017-10-19T16:58:59.123456789+09:00[Asia/Tokyo]
---------------------Vérification 5 java.util.Convertir en date-----------------------
Thu Oct 19 16:58:59 JST 2017
---------------------Vérification 6 Calculez la fin du mois avec Année Mois-----------------------
Fin du mois=2017-10-31
Fin du mois dernier=2017-09-30
Fin du mois prochain=2017-11-30
---------------------Vérification 7 Calculez le début et la fin du mois avec des ajusteurs temporels-----------------------
2017-10-01T16:58:59.123456789
2017-10-31T16:58:59.123456789

Lors de l'enregistrement des données dans la colonne de date de DB, je les mappe souvent à java.util.Date avec myBatis, mais je voudrais essayer la prochaine fois si elles peuvent être mappées avec ZonedDateTime ou LocalDateTime.

Recommended Posts

Étude de Java 8 (API de date dans le package java.time)
API Zabbix en Java
Manipulation de la date dans Java 8
API Java Stream en 5 minutes
Afficher la date actuelle en Java
[Java] "T" est inclus dans le type de date JSON dans la réponse de l'API
Traitement de la date en Java (LocalDate: Initialization)
Générer l'URL de l'API CloudStack en Java
Hit l'API de Zaim (OAuth 1.0) en Java
Analyser l'analyse syntaxique de l'API COTOHA en Java
JPA (API de persistance Java) dans Eclipse
Étudier Java ―― 9
Étudier Java ―― 4
Étudier Java -5
Étudier Java ―― 1
Étudier Java # 0
Étudier Java ―― 8
Étudier Java ②
Étudier Java ―― 7
Étudier Java ―― 2
Étudier Java ①
Étudier Java -10
J'ai essayé d'utiliser l'API Elasticsearch en Java
Comment implémenter le calcul de la date en Java
Essayez d'utiliser l'API Stream en Java
Appelez l'API de notification Windows en Java
Essayez d'utiliser l'API au format JSON en Java
Date de sortie en Java au format étendu ISO 8601
Java 8 pour démarrer maintenant ~ API de date et d'heure ~
Comment obtenir la date avec Java
ChatWork4j pour l'utilisation de l'API ChatWork en Java
Partition en Java
[Java] Création d'API à l'aide de Jerjey (Jax-rs) avec eclipse
Changements dans Java 11
Étudier Java 8 (facultatif)
Janken à Java
Essayez d'utiliser l'API Cloud Vision de GCP en Java
API Java Stream
Étudier java9 (jShell)
Étudier Java 8 (Stream)
Taux circonférentiel à Java
Essayez d'utiliser l'analyse syntaxique de l'API COTOHA en Java
FizzBuzz en Java
Essayé l'API Toot et Streaming de Mastodon en Java
Appelez l'API Amazon Product Advertising 5.0 (PA-API v5) en Java
Lire JSON en Java
Implémentation de l'interpréteur par Java
Application Janken en Java
Programmation par contraintes en Java
Mettez java8 dans centos7
NVL-ish guy en Java
Joindre des tableaux en Java
"Hello World" en Java
Emballez la réponse de l'API (java)
Interface appelable en Java
Etudier Java 8 (Collector / Collectors)
[Java] Package de gestion
[Java] Opérations de date / heure
Utilisez java.time avec Jackson