J'ai un champ de type datetime some_field
dans une base de données MySQL. Je peux interroger les données en utilisant recordSet.getTimestamp("somefield")
, qui renvoie un objet java.sql.Timestamp
. Cependant, les valeurs renvoyées stockent une heure UTC. Maintenant, si le fuseau horaire est "Amérique/Chicago", comment puis-je convertir l'heure. Je dois prendre soin de l'heure d'été.MySQL, Java et TimeZone
Répondre
Je pense que vous devrez peut-être ignorer la précision inférieure à la milliseconde de Timestamp
- ce qui est probablement raisonnable, comme si vous convertissiez dans un fuseau horaire particulier, ce qui suggère qu'il s'agit d'une date «humaine». Quoi qu'il en soit:
TimeZone zone = TimeZone.getTimeZone("America/Chicago");
Calendar calendar = Calendar.getInstance(zone); // Also locale?
calendar.setTime(timestamp);
Maintenant, vous pouvez demander au calendrier pour ce que vous voulez valeurs - la date, l'heure de la journée, etc.
Alternativement, vous voudrez peut-être envisager d'utiliser Joda Time, ce qui est une bien meilleure date/heure API:
DateTimeZone zone = DateTimeZone.forID("America/Chicago");
DateTime dateTime = new DateTime(timestamp.getTime(), zone);
Problème ... Maintenant, dans la base de données, j'ai un temps '2012-07-31 16:00:00' et le fuseau horaire est 'Timezone.getTimeZone (" US/Eastern ")'. Mais le 'calendar.get (Calendar.HOUR_OF_DAY)' est 17. Je pense que c'est parce que le tz de mon serveur est "US/Central"? Que dois-je faire? –
@seanhawk: Vous devez déterminer avec certitude la valeur exacte renvoyée au code Java. Si vous imprimez 'timestamp.getTime()', que montre-t-il? (Je ne serai pas en mesure d'aider jusqu'à demain, mais je vais jeter un oeil alors.) –
Quand l'heure est à "2012-07-31 20:22:03" et fuseau horaire est "US/Pacifique", 'horodatage .getTime() 'est 1343784123000, qui est" mer, 01 août 2012 01:22:03 GMT "(voir www.onlineconversion.com/unix_time.htm). Cela signifie 'resultSet.getTimestamp()' traite le résultat comme s'il se trouvait dans le fuseau horaire du serveur de l'application, qui est "US/Central" dans mon cas. BTW, 'resultSEt.getTimestamp (key, cal)' obtient exactement la même chose 'Timestamp'. –
- 1. Requête MySQL Timezone
- 2. MySql timestamp timezone weirdness
- 3. set timezone mysql
- 4. java incorrect timezone
- 5. fmt: formatDate et timeZone
- 6. Java Convert TimeZone
- 7. Comment régler java timezone?
- 8. Java Calendrier TimeZone désordre
- 9. Problème TimeZone en Java
- 10. Aide timezone en PHP/MySQL
- 11. Java Datetime avec format Timezone
- 12. log4php et timezone
- 13. Java - convertir date en UTC et UTC dans une TimeZone
- 14. Comment stocker les utilisateurs timezone dans mysql?
- 15. Obtenir la valeur timezone dans mysql
- 16. Java SimpleDateFormat Wrong Timezone après l'analyse
- 17. Date d'analyse avec TimeZone (java/android)
- 18. TimeZone Id de décalage GMT en Java
- 19. Android Time, TimeZone et GPS
- 20. jquery timepicker et timezone set
- 21. BIRT report timezone
- 22. Regroupement d'objets ActiveSupport :: Timezone dans un TimeZone
- 23. Timezone premières Décalages
- 24. Utiliser mysql et Java
- 25. Threads Java et MySQL
- 26. Java NetBeans et MySQL
- 27. Connexion java et mysql
- 28. Migrer TimeZone vers DateTimeZone
- 29. javazic timezone format
- 30. Définition dynamique de la connexion timezone avec Spring et c3p0 et MySQL
Peut-être que je devrais utiliser 'getString()' au lieu de 'getTimestamp()'. L'API datetime de Java pue. –