CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Gestion fuseau horaire java

vive_cod4
vive_cod4
Niveau 9
23 avril 2012 à 22:30:11

Bonjour tout le monde,

Actuellement je travaille sur un projet, dont je dois savoir le fuseau horaire de la personne (donc doit aussi marcher au Zimbabwe.

J'ai réussi à obtenir quelque chose de pas mal en utilisant l'objet Date (je prenais l'heure puis je le soustrayez à l'heure à Greenwich (GMT) ce qui me donnait qqch de juste).

Le problème c'est que la classe est assez obsolète (deprecated, pour 90% des méthodes) et j'aimerais utiliser une autre classe sans avoir ce problème. J'ai cherché au niveau de Calendar,TimeZone,DateFormat,GregorianCalendar mais rien trouver de concluant qui ne nécessite pas de définir le TimeZone.

Des idées ?

Merci d'avance

Pseudo supprimé
Pseudo supprimé 23 avril 2012 à 22:43:02

Mélange les deux :)
http://stackoverflow.com/questions/230126/how-to-handle-calendar-timezones-using-java

Pseudo supprimé
Pseudo supprimé 23 avril 2012 à 22:43:57

Je voulais dire, les trois : Date, TimeZone et Calendar (qui est le bien)

vive_cod4
vive_cod4
Niveau 9
23 avril 2012 à 22:50:05

Merci de ta réponse, je regarderais demain mais je vois déjà que la seule méthode utilisée de Date n'est pas obsolète :ange:

Pseudo supprimé
Pseudo supprimé 23 avril 2012 à 22:54:07

En fait, Date te sert surtout à initialiser des Calendar et stocker les valeurs "de nos jours" :p Mais cet objet sert toujours, c'est juste que les méthodes liées au calcul plus qu'à la date ont migré vers un objet plus approprié : le Calendar.

vive_cod4
vive_cod4
Niveau 9
27 avril 2012 à 23:09:41

J'ai enfin pu essayé et j'ai trouvé mon bohneur !

Je poste pour les intéressés :

SimpleDateFormat formatter = new SimpleDateFormat("HH");

formatter.setTimeZone(TimeZone.getTimeZone("UTC"))
;

Calendar cal = Calendar.getInstance();
String timestamp = formatter.format(cal.getTime());

Pour finir il suffit de faire l'heure du calendrier - l'heure GMT pour avoir la zome.

Merci encore Raspberry

_skip
_skip
Niveau 10
28 avril 2012 à 08:31:54

Mouais 22h00 gmt
0h gmt+2
Ca te donne -22, pas super.

Les zones c'est pas seulement des décalages, c'est aussi des heures d'été et d'hiver en fonction des mois. C'est nous par exemple c'est -2h l'hiver et -1h l'été.

Ton vilain calcul moche te donne au mieux l'offset du moment, pas la zone, pour ça tu peux faire :

TimeZone tz = Calendar.getInstance().getTimeZone();

Ensuite si tu veux l'offset tu as des méthodes pour le récupérer dans TimeZone.

vive_cod4
vive_cod4
Niveau 9
28 avril 2012 à 09:47:18

Euh, bizarre j'ai bien obtenu pour mon pc :

Mon heure : 23
Heure GMT : 21

Don zone +2 en suisse ce qui juste (1 en hiver et 2 en été).

Bref mais maintenant je vois le problème quand c'est le matin (0,1,...) .

Je me renseignerais sur ce fameux offset et regaederais comment l'exprimer.

Merci

vive_cod4
vive_cod4
Niveau 9
28 avril 2012 à 14:12:49

En effet,ça marche bel et bien.

Hier je comprenais pas pourquoi j'avais une différence énorme avec cette méthode, mais j'avais oublié de diviser par 3600 (faudrait vraiment pas programmer tard le soir ...).

Voilà la méthode finale et simple !

TimeZone l_t = _cal.getTimeZone();
int zone = l_t.getOffset(_cal.getTimeInMillis())/1000/3600;

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment