Avec l'application généralisée du langage Java, le traitement de l'heure et de la date est devenu une partie du développement d'API qui ne peut être ignorée. Le traitement de l'heure et de la date implique de nombreux problèmes complexes, tels que le fuseau horaire, l'heure d'été, etc., c'est pourquoi Java fournit une série de classes d'heure et de date pour faciliter la gestion de ces problèmes.
1. Classes de temps en Java
Java fournit trois classes de date et d'heure : java.util.Date, java.sql.Date et les classes du package java.time.
La classe java.util.Date est la classe de traitement de date et d'heure d'origine de Java. Cette classe a quelques problèmes, tels que des problèmes de traitement de fuseau horaire et d'heure d'été, donc cette classe. est obsolète. Bien qu'il puisse toujours être utilisé, il est fortement recommandé d'utiliser les classes du package java.time pour le traitement de la date et de l'heure.
La classe java.sql.Date est une sous-classe de java.util.Date, mais elle ne représente que la partie date des informations de date, et est également obsolète et son utilisation n'est pas recommandée. Dans JDBC, la classe java.sql.Date est largement utilisée et constitue un type courant pour traiter les informations de date dans les bases de données.
Java 8 a introduit le package java.time, qui fournit une série de classes pour gérer les dates et les heures. Les classes fournies par ce package sont hautement lisibles, immuables et thread-safe, et offrent une bonne prise en charge du traitement de divers formats d'heure et de date. Certaines classes couramment utilisées dans ce package sont les suivantes :
(1) LocalDate
La classe LocalDate représente uniquement les informations de date et n'inclut pas les informations d'heure ni les informations de fuseau horaire. Cette classe peut être utilisée pour traiter facilement des dates, comme calculer le nombre de jours, de mois, d'années, etc. entre deux dates. Voici l'exemple de code de cette classe :
// 获取当前日期 LocalDate today = LocalDate.now(); // 获取指定日期 LocalDate date = LocalDate.parse("2020-07-20"); // 计算两个日期之间的天数 long days = ChronoUnit.DAYS.between(today, date);
(2) LocalTime
La classe LocalTime représente les informations d'heure, sans informations de date ni informations de fuseau horaire. Cette classe est généralement utilisée pour traiter l'heure de la journée, comme obtenir l'heure actuelle, calculer la durée entre deux heures, etc. Voici l'exemple de code pour cette classe :
// 获取当前时间 LocalTime now = LocalTime.now(); // 获取指定时间 LocalTime time = LocalTime.parse("15:30"); // 计算两个时间之间的差值 Duration duration = Duration.between(now, time); long diff = duration.getSeconds();
(3) LocalDateTime
La classe LocalDateTime contient des informations sur la date et l'heure, mais aucune information sur le fuseau horaire. Cette classe peut être utilisée pour traiter la combinaison d'informations de date et d'heure, comme obtenir la date et l'heure actuelles, fusionner la date et l'heure, etc. Voici l'exemple de code pour cette classe :
// 获取当前日期时间 LocalDateTime now = LocalDateTime.now(); // 获取指定日期时间 LocalDateTime dateTime = LocalDateTime.parse("2020-07-20T15:30:00"); // 将日期和时间合并 LocalDate date = LocalDate.parse("2020-07-20"); LocalTime time = LocalTime.parse("15:30"); LocalDateTime dateTime2 = LocalDateTime.of(date, time);
(4) ZonedDateTime
La classe ZonedDateTime contient des informations sur la date, l'heure et le fuseau horaire. Cette classe peut être utilisée pour gérer les informations de date et d’heure sur plusieurs fuseaux horaires. Voici l'exemple de code de cette classe :
// 获取当前日期时间和时区 ZonedDateTime now = ZonedDateTime.now(); // 获取指定时区的日期时间 ZoneId zoneId = ZoneId.of("Asia/Shanghai"); ZonedDateTime dateTime = ZonedDateTime.of(LocalDateTime.now(), zoneId);
2. Formatage de l'heure et de la date
En Java, le formatage de la date et de l'heure utilise principalement la classe DateTimeFormatter du package java.time.format. Cette classe fournit diverses options de formatage qui peuvent être utilisées pour formater les informations de date et d'heure. Voici un exemple de code de cette classe :
// 格式化日期 LocalDate date = LocalDate.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formattedDate = date.format(formatter); // 格式化时间 LocalTime time = LocalTime.now(); formatter = DateTimeFormatter.ofPattern("HH:mm:ss"); String formattedTime = time.format(formatter); // 格式化日期时间 LocalDateTime dateTime = LocalDateTime.now(); formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formattedDateTime = dateTime.format(formatter);
3. Traitement du fuseau horaire
Dans le package java.time, le traitement du fuseau horaire utilise la classe java.time.ZoneId. Cette classe fournit une série de méthodes statiques pour obtenir la liste des fuseaux horaires prise en charge par le système, ainsi que certaines méthodes de conversion ainsi que pour obtenir et définir des informations sur le fuseau horaire. Voici un exemple de code de cette classe :
// 获取系统支持的时区列表 Set<String> zoneIds = ZoneId.getAvailableZoneIds(); // 将日期时间从一个时区转换为另一个时区 ZonedDateTime dateTime = ZonedDateTime.parse("2020-07-20T15:30:00+0800[Asia/Shanghai]"); ZoneId zoneId = ZoneId.of("America/New_York"); ZonedDateTime dateTimeInNewYork = dateTime.withZoneSameInstant(zoneId);
4. Gestion de l'heure d'été
L'heure d'été entraîne généralement des changements d'heure, une attention particulière doit donc être accordée lors de la gestion de l'heure d'été. En Java, le traitement de l’heure d’été est généralement représenté par la classe ZoneRules. Cette classe fournit des méthodes permettant d’obtenir des règles d’heure d’été et de calculer l’heure d’été, ce qui peut faciliter le traitement de l’heure d’été. Voici un exemple de code de cette classe :
// 获取当前时区的夏令时规则 ZoneId zoneId = ZoneId.of("Asia/Shanghai"); ZoneRules rules = zoneId.getRules(); // 判断指定的时间是否是夏令时 LocalDateTime dateTime = LocalDateTime.now(); boolean isDst = rules.isDaylightSavings(dateTime.toInstant(zoneId.getRules().getOffset(dateTime)));
Résumé
Dans le développement d'API Java, le traitement de l'heure et de la date est une partie très importante. L'utilisation des classes d'heure et de date fournies par Java permet de gérer facilement divers problèmes complexes d'heure et de date, tels que les fuseaux horaires, l'heure d'été, etc. Lorsque vous utilisez des classes d'heure et de date, vous devez faire attention à l'utilisation des classes du package java.time introduit dans Java 8 pour le traitement afin d'obtenir de meilleurs résultats.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!