Introduction
Stockage des dates qui représentent uniquement l'année, le mois, et le jour, comme les anniversaires, pose des défis lorsqu'il s'agit de gérer les fuseaux horaires. Cet article explore une solution élégante à ce problème en utilisant des API Java modernes.
Le défi
Les représentations date-heure Java traditionnelles (par exemple, java.util.Date) incluent à la fois un composant d’heure et de fuseau horaire. Le stockage de dates abstraites qui n'ont pas d'heure ou de fuseau horaire spécifique soulève des préoccupations quant au maintien de la cohérence dans différents environnements avec des fuseaux horaires variables.
Solution : java.time
Java SE 8 a introduit l'API java.time, qui fournit un moyen robuste et efficace de gérer les calculs date-heure. LocalDate est une classe clé dans cette API, représentant une date sans aucune information d'heure ou de fuseau horaire.
Par exemple :
LocalDate birthday = LocalDate.of(1990, 1, 1);
Ce code représente l'anniversaire du 1er janvier 1990, quel que soit le le fuseau horaire de la machine.
Mappage vers MySQL
LocalDate correspond au type ANSI SQL DATE, comme indiqué ci-dessous :
ALTER TABLE persons ADD COLUMN birthday DATE;
Considérations sur la base de données
Avantages
Exemple
Considérons le code Java suivant qui stocke une date de naissance dans une base de données MySQL :
// Store a birthday in UTC: String query = "INSERT INTO persons (birthday) VALUES (?)"; PreparedStatement statement = connection.prepareStatement(query); statement.setObject(1, birthday); // Retrieve birth date from database in UTC: String query = "SELECT birthday FROM persons WHERE id = ?"; PreparedStatement statement = connection.prepareStatement(query); statement.setInt(1, personId); ResultSet resultSet = statement.executeQuery(); LocalDate birthday = resultSet.getObject("birthday", LocalDate.class);
Ce code garantit que l'anniversaire est stocké et récupéré en tant que valeur de date pure, sans aucune information d'heure ou de fuseau horaire.
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!