Maison > Java > javaDidacticiel > Le stockage « java.sql.Timestamp » de Java dépend-il du fuseau horaire ?

Le stockage « java.sql.Timestamp » de Java dépend-il du fuseau horaire ?

Linda Hamilton
Libérer: 2024-12-13 13:01:10
original
849 Les gens l'ont consulté

Does Java's `java.sql.Timestamp` Storage Depend on the Time Zone?

Le stockage de java.sql.Timestamp est-il influencé par le fuseau horaire ?

Dans JDBC, le comportement de la méthode setTimestamp() avec java.sql. L'horodatage peut varier en fonction de la mise en œuvre du pilote.

L'horodatage du pilote Comportement :

La plupart des pilotes adhèrent aux règles décrites dans le javadoc pour setTimestamp (int parameterIndex, Timestamp x, Calendar cal). Si aucun objet Calendrier n'est fourni, le pilote utilise généralement le fuseau horaire de la machine virtuelle exécutant l'application.

Stockage de l'horodatage dans la base de données :

Lors de l'utilisation de setTimestamp( int paramètreIndex, Timestamp x) sans spécifier de calendrier, le pilote convertit l'horodatage en fuseau horaire de la VM avant de le stocker dans la base de données. Si la colonne de la base de données ne contient pas d'informations sur le fuseau horaire, cette conversion peut entraîner la perte des données de fuseau horaire.

Exemple :

Considérons un fuseau horaire local de GMT 2 et un horodatage UTC de « 2012-12-25 10:00:00 UTC ». Après stockage dans la base de données, l'horodatage apparaît sous la forme "2012-12-25 12:00:00" (GMT 2). S'il est récupéré par une application en GMT 0, l'horodatage sera interprété comme "2012-12-25 12:00:00 UTC."

Stockage des horodatages dans des fuseaux horaires spécifiques :

Pour stocker les horodatages dans un fuseau horaire spécifique, utilisez setTimestamp(int parameterIndex, Timestamp x, Calendar cal) avec l'instance de calendrier souhaitée (par exemple, Calendar.getInstance(TimeZone.getTimeZone("GMT")) pour GMT).

Récupération d'horodatage :

De même, lors de la récupération des horodatages, assurez-vous d'utiliser le même fuseau horaire que lors du stockage eux.

Utilisation de java.time.LocalDateTime avec JDBC 4.2 :

Dans les pilotes compatibles JDBC 4.2, vous pouvez utiliser java.time.LocalDateTime (et java.time. LocalTime) avec les types TIMESTAMP et TIME via les méthodes get/set/updateObject. Ces classes représentent le temps sans fuseaux horaires.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal