Java, heure locale
Résolu
sebastien61
Messages postés
495
Date d'inscription
Statut
Membre
Dernière intervention
-
sebastien61 Messages postés 495 Date d'inscription Statut Membre Dernière intervention -
sebastien61 Messages postés 495 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite écrire la date "30/03/2008 02:00:00" (que je récupère sous forme de String) dans une base de données. Cette date se trouve avant un passage heure d'hiver vers heure d'été (changement à 3h du matin)
Quand je fait :
J'ai en sortie dans maDate : 30/03/2008 03:00:00 !
Remarques : si je fais le même traitement avec une heure d'été, je n'ai pas de problème. J'ai essayé en ajouter "GMT+1:00", "GMT", "GMT-1:00" dans le String, mais ça n'a pas résolu mon problème...
Je comprends que c'est un problème de changement d'heure, mais j'aimerais que java prenne la date/l'heure comme étant locale, sans la modifier !
Merci d'avance pour votre aide.
Je souhaite écrire la date "30/03/2008 02:00:00" (que je récupère sous forme de String) dans une base de données. Cette date se trouve avant un passage heure d'hiver vers heure d'été (changement à 3h du matin)
Quand je fait :
String strDate = "30/03/2008 02:00:00";
SimpleDateFormatter sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date maDate = sdf.parse(strDate);
J'ai en sortie dans maDate : 30/03/2008 03:00:00 !
Remarques : si je fais le même traitement avec une heure d'été, je n'ai pas de problème. J'ai essayé en ajouter "GMT+1:00", "GMT", "GMT-1:00" dans le String, mais ça n'a pas résolu mon problème...
Je comprends que c'est un problème de changement d'heure, mais j'aimerais que java prenne la date/l'heure comme étant locale, sans la modifier !
Merci d'avance pour votre aide.
A voir également:
- Java, heure locale
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Ip locale - Guide
- Waptrick java voiture - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
3 réponses
Salut,
Finalement j'ai trouvé ceci:
Finalement j'ai trouvé ceci:
import java.text.*;
import java.util.*;
public class TestDateTimeZone
{
public static final SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
public static void main(String[] args) throws Exception
{
String laDateBdd = "30/03/2008 02:00:00";
System.out.println("\nLa date Bdd :\n" + "\"" + laDateBdd + "\"\n");
String laDate = laDateBdd.substring(6,10) + "/" + laDateBdd.substring(3,5)
+ "/" + laDateBdd.substring(0,2) + " " + laDateBdd.substring(11);
System.out.println("La date qui sera utilisee :\n" + laDate + "\n");
// Pour éviter les fuseaux horaires
// Sinon le parsing est impossible TOUTE LA JOURNEE D'UN CHANGEMENT D'HEURE
TimeZone utc = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utc);
DATE_FORMATTER.setTimeZone(utc);
// parsing de la date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date parsedDate = sdf.parse(laDate);
// formattage selon définition du projet
String formattedDateString = DATE_FORMATTER.format(parsedDate);
System.out.println("Avec la date BDD: " + laDateBdd);
System.out.println("Nous utilisons : " + laDate);
System.out.println("Et nous obtenons: " + formattedDateString);
}
}
Salut,
Une solution:
Cordialement,
Dan
Une solution:
String laDateBdd = "30/03/2008 02:00:00";
System.out.println("\nLa date Bdd :\n" + "\"" + laDateBdd + "\"\n");
String laDate = laDateBdd.substring(6,10) + "/" + laDateBdd.substring(3,5) + "/"
+ laDateBdd.substring(0,2) + " " + laDateBdd.substring(11);
System.out.println("La date qui sera utilisee :\n" + laDate + "\n");
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date d = sdf.parse(laDate);
System.out.println("La date obtenue:\n" + d.toString() + "\n");
sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
String maDate = sdf.format(d);
System.out.println("La date que l'on veut:\n" + maDate + "\n");
}
catch(Exception e) {
System.err.println("Exception :");
e.printStackTrace();
}
Cordialement,
Dan
Salut danimo, merci pour ta réponse.
J'ai essayé avec "30/03/2008 02:20:00", voici l'affichage :
Ce n'est pas un problème avec SimpleDateFormat, mais un problème de timezone (dû au décalage horaire).
Merci pour ton aide malgré tout !
D'autres suggestions ?
Merci d'avance
J'ai essayé avec "30/03/2008 02:20:00", voici l'affichage :
La date Bdd : "30/03/2008 02:20:00" La date qui sera utilisee : 2008/03/30 02:20:00 La date obtenue: Sun Mar 30 03:20:00 CEST 2008 La date que l'on veut: 30/03/2008 03:20:00
Ce n'est pas un problème avec SimpleDateFormat, mais un problème de timezone (dû au décalage horaire).
Merci pour ton aide malgré tout !
D'autres suggestions ?
Merci d'avance
Salut,
Peux-tu me dire ce que tu obtiens avec ceci (qui ne changera pas le résultat, mais j'ai besoin de ce qui s'affiche dans la boîte de dialogue)
merci
Peux-tu me dire ce que tu obtiens avec ceci (qui ne changera pas le résultat, mais j'ai besoin de ce qui s'affiche dans la boîte de dialogue)
String info = "langue/pays = "
+ System.getProperty("user.language") + "/"
+ System.getProperty("user.country") + "\n";
javax.swing.JOptionPane.showMessageDialog(null,info);
merci
Ensuite j'ai rajouté l'argument en lancement de l'appli : -Duser.timezone=GMT pour indiquer à la JVM qu'on est au méridien de greenwich.
C'est pas très joli mais ça fonctionne (parce qu'il n'y a pas de changement d'heure au méridien greenwich !
Merci quand même pour ton aide.