Exemples de code de conversion
Scénarios de conversion complets
Exemple de conversion de base
public class LocalDateToTimestampConverter {
public static Timestamp convertLocalDateToTimestamp(LocalDate localDate) {
return Timestamp.valueOf(localDate.atStartOfDay());
}
}
Plusieurs techniques de conversion
1. Conversion avec le fuseau horaire par défaut du système
public Timestamp convertWithSystemZone(LocalDate localDate) {
return Timestamp.from(
localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()
);
}
2. Conversion explicite en UTC
public Timestamp convertToUTCTimestamp(LocalDate localDate) {
return Timestamp.from(
localDate.atStartOfDay(ZoneId.of("UTC")).toInstant()
);
}
Diagramme de flux de la stratégie de conversion
graph TD
A[LocalDate Input] --> B{Conversion Method}
B --> |Method 1| C[atStartOfDay()]
B --> |Method 2| D[toInstant()]
C --> E[Timestamp Output]
D --> E
Scénarios de conversion pratiques
Exemple d'insertion dans une base de données
public class DatabaseConverter {
public void insertDateRecord(Connection conn, LocalDate inputDate) {
String sql = "INSERT INTO date_records (record_timestamp) VALUES (?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
Timestamp timestamp = Timestamp.valueOf(inputDate.atStartOfDay());
pstmt.setTimestamp(1, timestamp);
pstmt.executeUpdate();
}
}
}
Comparaison des méthodes de conversion
Méthode de conversion |
Précision |
Gestion du fuseau horaire |
Cas d'utilisation |
atStartOfDay() |
Début de la journée |
Fuseau horaire par défaut du système |
Conversions simples |
toInstant() |
Milliseconde |
Fuseau horaire explicite |
Horodatage précis |
Gestion des erreurs et validation
public Timestamp safeConvert(LocalDate localDate) {
Objects.requireNonNull(localDate, "Input date cannot be null");
try {
return Timestamp.valueOf(localDate.atStartOfDay());
} catch (DateTimeException e) {
// Log error or handle gracefully
return null;
}
}
Techniques de conversion avancées
Conversion avec un fuseau horaire personnalisé
public Timestamp convertWithCustomZone(LocalDate localDate, String zoneId) {
ZoneId customZone = ZoneId.of(zoneId);
return Timestamp.from(localDate.atStartOfDay(customZone).toInstant());
}
- Privilégiez
toInstant()
pour les exigences de haute précision.
- Mettez en cache les instances
ZoneId
lorsque cela est possible.
- Utilisez une gestion explicite des erreurs.
Chez LabEx, nous mettons l'accent sur l'écriture d'un code de conversion de dates robuste et efficace qui gère de manière transparente divers scénarios.