Question

J'ai un objet calendrier [localDate] qui est dans EST: disons le 6 novembre 15:34 ... et je définis le fuseau horaire sur GMT + 5: 30 ... maintenant quand je fais le Calendar.HOUR_OF_DAY Cela me renvoie 2 ... ce que je sais est parfait .. puisque son 15:34 + 5 heures à GMT puis +5: 30 au fuseau horaire .. ce qui signifie simplement .. 26:04 qui est 2 de 7.

Cependant, la date reste toujours au 6 novembre ... et localDate.getTime() revient toujours le 6 novembre .. et même lorsque j'imprime le localDate .. il montre le fuseau horaire comme +5: 30, mais le jour et tout le reste est toujours comme l'heure locale originale .. [c'est-à-dire 6 novembre

Je suis tout simplement incapable de comprendre pourquoi ...

Éditer ::

Je comprends donc que je n'ai pas besoin de modifier la date avec le fuseau horaire. Changez uniquement la façon dont la date est affichée adaptée à cet emplacement et qui peut être effectuée en utilisant le fuseau horaire qui a été défini.

Pas de solution correcte

Autres conseils

localDate.getTime() Renvoie un java.util.Date qui est une quantité de temps brut depuis un point fixe. Les fuseaux horaires affectent uniquement la représentation lisible par l'homme du point dans le temps.

15:34 Nov 6th UTC - 5et02:04 Nov 7th UTC + 5:30

sont les deux exactement le même point dans le temps absolu. Ce ne sont que deux façons humaines différentes de décrire le même instant.

Donc, changer le fuseau horaire sur le calendrier n'a aucun effet sur la valeur renvoyée par getTime()

Date Les objets n'ont pas de fuseau horaire - un Date L'objet représente un moment "absolu" dans le temps. Lorsque vous imprimez un Date objet (en appelant implicitement ou explicitement toString() dessus):

Date date = ...;
System.out.println(date);

Ensuite, il sera formaté en utilisant un format par défaut qui affichera la date de votre fuseau horaire local - peu importe si vous obtenez le Date objet de un Calendar qui a été réglé sur un autre fuseau horaire.

Si vous souhaitez afficher le Date Dans un fuseau horaire différent, utilisez un DateFormat Objet et définissez le fuseau horaire dans lequel vous souhaitez afficher votre date sur cet objet:

Date date = ...;

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
df.setTimeZone(TimeZone.getTimeZone("UTC"));  // For example, UTC

// Prints 'date' in UTC
System.out.println(df.format(date));

La question n'est pas claire

Votre question est déroutante.

Vous pouvez être confondu au sujet du sens des fuseaux horaires. Comme l'a dit les bonnes réponses de Jesper et Affe, le changement de fuseau horaire ne change pas le point sur la chronologie de l'univers. Supposons que Bob à New York US appelle Susan à Reykjavík Island. L'Islande utilise UTC comme fuseau horaire toute l'année. Bob et Susan se parlent au même moment. Mais si Bob regarde l'horloge sur son mur, il voit un temps affiché qui est 5 heures plus tôt qu'une horloge sur le mur de Susan. New York a un décalage de cinq heures derrière l'UTC (-5: 00).

Un autre problème avec votre question: vous parlez également d'un décalage de fuseau horaire à 5h00 ainsi que d'un décalage de 5h30. Lequel est-ce? Ou avez-vous deux fuseaux horaires en tête ainsi que GMT / UTC?

Joda-temps

Je vais vous donner un coup de poing pour vous donner un peu d'exemple de code source.

La Joda-temps La bibliothèque facilite les travaux de date.

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.

// Use time zone names rather than explicit number of hours offset is generally a good thing.
// Affords Joda-Time an opportunity to make adjustments such as Daylight Saving Time (DST).

// Question asked:
// (1) Start with a US east coast time (Standard offset of -5:00) of November 6, 2013 15:34.
// (2) Move that datetime to UTC (GMT) time zone (no offset).
// (3) Move that datetime to Kolkata (formerly known as Calcutta) India time zone (Standard offset of +05:30).

// Joda-Time has deprecated use of 3-letter time zone codes because of their inconsistency. Use other identifier for zone.
// Time Zone list: http://joda-time.sourceforge.net/timezones.html  (Possibly out-dated, read note on that page)
org.joda.time.DateTimeZone newyorkTimeZone = org.joda.time.DateTimeZone.forID( "America/New_York" );
org.joda.time.DateTimeZone kolkataTimeZone = org.joda.time.DateTimeZone.forID( "Asia/Kolkata" );

// Question calls for: EST Nov 6, 15:34 (Standard offset of -5:00).
// This DateTime constructor calls for passing: year, month, day, time zone.
org.joda.time.DateTime dateTimeInNewYork = new org.joda.time.DateTime( 2013, org.joda.time.DateTimeConstants.NOVEMBER, 6, 15, 34, newyorkTimeZone );
// Move to UTC time zone (no offset).
org.joda.time.DateTime dateTimeUtc = dateTimeInNewYork.toDateTime( org.joda.time.DateTimeZone.UTC );
// Move to Kolkata IN time zone (Standard offlet of +05:30).
org.joda.time.DateTime dateTimeInKolkata = dateTimeUtc.toDateTime( kolkataTimeZone ); // Or invoke this method on dateTimeInNewYork, does not matter which.

// All three of these date-time objects represent the same moment in the time-line of the Universe,
// but present themselves with different time-zone offsets.
System.out.println( "dateTimeInNewYork: " + dateTimeInNewYork );
System.out.println( "dateTimeUtc: " + dateTimeUtc );
System.out.println( "dateTimeInKolkata: " + dateTimeInKolkata );

Quand courir…

dateTimeInNewYork: 2013-11-06T15:34:00.000-05:00
dateTimeUtc: 2013-11-06T20:34:00.000Z
dateTimeInKolkata: 2013-11-07T02:04:00.000+05:30

enter image description here

À propos de Joda-Time…

// Joda-Time - The popular alternative to Sun/Oracle's notoriously bad date, time, and calendar classes bundled with Java 7 and earlier.
// http://www.joda.org/joda-time/

// Joda-Time will become outmoded by the JSR 310 Date and Time API introduced in Java 8.
// JSR 310 was inspired by Joda-Time but is not directly based on it.
// http://jcp.org/en/jsr/detail?id=310

// By default, Joda-Time produces strings in the standard ISO 8601 format.
// https://en.wikipedia.org/wiki/ISO_8601

// About Daylight Saving Time (DST): https://en.wikipedia.org/wiki/Daylight_saving_time

// Time Zone list: http://joda-time.sourceforge.net/timezones.html
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top