Question

Considérons le code suivant:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy", Locale.US);
long start = sdf.parse("10:30:00 30/09/2009").getTime();
long end = sdf.parse("10:30:00 30/10/2009").getTime();

Calendar c = Calendar.getInstance(Locale.US);
c.setTimeInMillis(start);
System.out.println("Start = " + c.getTime());
c.setTimeInMillis(end);
System.out.println("  End = " + c.getTime());

Lors de l'exécution de ce bout de code, j'ai la sortie suivante:

Start = Wed Sep 30 10:30:00 CEST 2009
  End = Fri Oct 30 10:30:00 CET 2009

Pourquoi puis-je obtenir fuseau horaire différent?

Notez que si je mets la première date en août et le second en septembre, la sortie affiche le même fuseau horaire dans les deux cas:

long start = sdf.parse("10:30:00 30/08/2009").getTime();
long end = sdf.parse("10:30:00 30/09/2009").getTime();

affichera:

Start = Sun Aug 30 10:30:00 CEST 2009
  End = Wed Sep 30 10:30:00 CEST 2009

J'utilise Java 1.6.0_14

Était-ce utile?

La solution

CEST est Heure d'Europe Centrale d'été. Il est le même que CET avec l'heure d'été en vigueur.

Autres conseils

Vous pouvez définir le fuseau horaire par défaut

    import java.util.TimeZone;
...        
    TimeZone.setDefault(TimeZone.getTimeZone("UTC"));  // or "Etc/GMT-1"

    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy", Locale.US);
    long start = sdf.parse("10:30:00 30/09/2009").getTime();
    long end = sdf.parse("10:30:00 30/10/2009").getTime();

    Calendar c = Calendar.getInstance(Locale.US);
    c.setTimeInMillis(start);
    System.out.println("Start = " + c.getTime());
    c.setTimeInMillis(end);
    System.out.println("  End = " + c.getTime());

utilisation TimeZone.getAvailableIDs() pour voir tous les ID disponibles.

EDIT : vous pouvez également utiliser une nouvelle SimpleTimeZone

    TimeZone.setDefault(new SimpleTimeZone(60 * 60 * 1000, "CET"));

Oui, il est lié au temps d'économie de jour. Si vous utilisez un fuseau horaire qui reconnaît l'heure d'été, il sera automatiquement utilisé. Vous pouvez utiliser GMT par exemple, si vous ne voulez pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top