Je suis vraiment confus avec le résultat que j'obtiens avec l' Calendar.getInstance(TimeZone.getTimeZone("UTC"))
appel de méthode, il renvoie l'heure IST.
Voici le code que j'ai utilisé
Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(cal_Two.getTime());
et la réponse que j'ai obtenue est:
Sat Jan 25 15:44:18 IST 2014
J'ai donc essayé de changer le fuseau horaire par défaut en UTC, puis j'ai vérifié, alors cela fonctionne bien
Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(cal_Two.getTime());
TimeZone tz = TimeZone.getDefault() ;
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
Calendar cal_Three = Calendar.getInstance();
System.out.println(cal_Three.getTime());
TimeZone.setDefault(tz);
Résultat:
Sat Jan 25 16:09:11 IST 2014
Sat Jan 25 10:39:11 UTC 2014
Est-ce que j'ai râté quelque chose?
java.util.Date
est indépendant du fuseau horaire. Lorsque vous imprimezcal_Two
alors que l'Calendar
instance a son fuseau horaire défini surUTC
,cal_Two.getTime()
renvoie uneDate
instance qui n'a pas de fuseau horaire (et est toujours dans le fuseau horaire par défaut)Production:
Du javadoc de
TimeZone.setDefault()
Par conséquent, en déplaçant votre
setDefault()
avantcal_Two
est instancié, vous obtiendrez le résultat correct.Production:
la source
travaille pour moi
la source
Il vous manque définitivement une petite chose et c'est que vous ne définissez pas de valeur par défaut:
Donc, le code ressemblerait à:
Explication : Si vous souhaitez modifier le fuseau horaire, définissez le fuseau horaire par défaut à l'aide de
TimeZone.setDefault()
la source
la source
Essayez d'utiliser à la
GMT
place deUTC
. Ils font référence au même fuseau horaire, mais le nomGMT
est plus courant et pourrait fonctionner.la source