[Classe GWT côté client] strong> J'ai un objet de date ... p> Cela fonctionne bien. Cependant, lorsque je fais un: p> Il renvoie une millisecondes de l'heure UNIX à l'aide d'un GMT avec des économies de lumière du jour, ce qui en fait une heure unique que je ne peux pas utiliser. J'en ai besoin dans UTC. Comment puis-je faire cela? P> Je fais actuellement une date et je me donne le dos: p> Cependant la date de la date M Passer est 1 heure de moins que cette fois (7:46 et pas 8:46!). P> Comment puis-je passer dans le fait que c'est UTC? Ou s'il ne peut pas utiliser UTC (qui serait ridicule), comment puis-je utiliser GMT sans les économies de lumière du jour? Strong> p> p>
5 Réponses :
Essayez le Calendrier . objet
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); Date dataObject = DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm:ss.SSS") .parse("2009-10-12T00:00:00.000); cal.setTime(dataObject); cal.getTimeInMillis();
Je ne pense pas que vous puissiez utiliser le calendrier avec GWT?
Etant donné que le calendrier code> code> n'est pas pris en charge dans GWT, peut-être que quelque chose de piratage comme celui-ci fonctionnera: de cette façon, vous pouvez fournir les informations de fuseau horaire appropriées - bien que , cela devrait être le comportement par défaut. P> p>
C'est le genre de chose que j'essayais. Cependant, je n'ai pas pu obtenir une bonne combinaison du tout. J'aurais pensé que le code de fuseau horaire serait "UTC" pour UTC? N'est-ce pas -7: 00 californie ou quelque chose comme ça?
J'ai ajouté "gmt-07: 00" code> à titre d'exemple, vous devez passer à la valeur de toute valeur qui fonctionne pour vous;] (afin que vous obtenez votre "Millisecondes UNIX à l'aide d'un GMT avec des économies de jour"; )))
C'est l'inverse. Une date code> instance code> contient l'heure en millisecondes depuis l'époque, à l'aide de l'échelle de temps UTC (c'est-à-dire des secondes saut-leaps). C'est ce que Le coupable Voici l'analyseur, qui interprète la date à laquelle vous donnez une chaîne dans votre fuseau horaire local. Si vous souhaitez date.gettime () code> retourne et c'est ce que vous voulez.
DateTimeFormat CODE> pour interpréter la chaîne comme une date et une heure donnée dans le fuseau horaire UTC, appendez une fuseau horaire explicite à la chaîne analysée: P>
DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm:ssZZZZ")
.parse("2009-10-12T00:00:00.000" + " GMT");
Je pense que GMT comprend automatiquement les économies d'été - ce que je ne veux pas. Je veux un UTC simple ou normal GMT.
@_BRAVADO: Ce n'est donc pas pourquoi la Grande-Bretagne utilise BST en été.
Eh bien, je ne sais pas ce que vous faites, mais pour moi - je dis Java, il doit être GMT et cela le rend en été. Donc, je répète, il ne B> ne B> ou peut-être que vous ou quiconque n'enregistre pas de se soucier d'expliquer leur réponse correctement.
Je continue de voir des formats avec Zzzz étant suggéré ... mais pourquoi? p>
"AAAA-MM-DD'HHHH: MM: SS.SSSZ" correspondrait à P>
"2009-10-12T00: 00: 00.000-0000" P>
La dernière partie étant le décalage de l'UTC; Californie (à utiliser l'exemple d'exemple de quelqu'un d'autre) serait -0800, -0700 en été. P>
Comme une note latérale, GMT est également toujours de -0000. C'est pourquoi la zone d'heure d'été de la Grande-Bretagne est BST (heure d'été britannique, +0100). P>
Je passe dans un horodatage extrait d'un fichier dans UTC. Je le passe avec vos suggestions - et il la convient à GMT Summertime - encore une fois. Soit vous n'envisagez pas du côté client GWT ou que quelque chose ne va pas fondamentalement avec mon GWT - qui est la dernière version.
Votre dernier édition rend les choses plus claires. p>
Fondamentalement, vous êtes confus, et vous obtenez déjà ce que vous voulez. P>
1239867980191 Millisecondes Depuis que l'époque se traduit au jeudi 16 avril 2009, à 7 h 46: 20.191 dans le fuseau horaire GMT. Le même instant se traduit au même jour, mais 8: 46: 20.191 dans le fuseau horaire GMT + 01. Si votre chaîne d'entrée spécifiée "7: 46: 20.191" et vous avez en effet 1239867980191 à partir de Si après em> vous obtenez "8:46:20" Lorsque vous imprimez, ceci est uniquement parce que vous utilisez le fuseau horaire GMT + 01 pour afficher ce instant. Notez que la chaîne contient Pour convertir une date code> à une chaîne afficable, utilisez date.gettime () code> puis félicitations, le code d'analyse a compris votre "7: 46: 20.191" comme pour être interprété dans le fuseau horaire GMT, et l'a fait correctement. P>
GMT + 100 code> précisément pour vous informer qu'il utilise ce fuseau horaire à des fins d'affichage. L'instance instant em> que la date code> instance représente est néanmoins exactement exactement l'instant que vous souhaitez contenir. N'oubliez pas qu'une instance code> date code> représente un instant dans le temps, pour laquelle aucune notion de fuseau horaire ne s'applique: Les zones de temps sont utilisées pour convertir des instants en éléments de calendrier (jours, heures ...) et en arrière. p>
denttitimeformat.format (date, fuseau horaire) code> qui vous permet de spécifier quel fuseau horaire que vous souhaitez utiliser pour cette chaîne. p>
+1 Pour une clarification agréable et pointant vers DateTimeFormat.Format (date, fuseau horaire) code>
Wow, cela a été une situation déroutante. Il semble que vous soyez correct. Merci pour la clarté supplémentaire :)
Il n'y a pas de concept de "Unix Time (in) millisecondes utilisant un GMT avec des économies de jour". Le nombre de millisecondes s'est écoulé depuis que l'époque est fixe et n'est pas liée aux économies de GMT et / ou d'une journée. Vous pouvez éventuellement nourrir une chaîne de temps intégré et / ou oublier de préciser si vous utilisez l'épargne de la lumière du jour ou non ou convertissez à tort votre temps en millisecondes vers un autre format. Mais le nombre de millisecondes depuis l'époque (utilisé à la fois par Java et par UNIX et de nombreuses autres technologies) est totalement agnostique au GMT et à l'épargne du jour.
OldtionHusiast: Cela devrait être une réponse.
Eh bien, vous obtenez certainement le pédalier de la journée.
Pas vraiment pendanrym: "Epoch + DST" n'est pas un vrai format horodatage utilisé dans GWT ou n'importe où.
GetTime code> vous retourne du temps écrit depuis l'EPOCH UTC comme prévu; Si DST / TimeZone modifie les résultats, il y a un problème ailleurs, par exemple. dans l'étape d'analyse.
Oui, j'aurais pensé que c'était évident. Je n'essaie pas de changer le code> code>, j'essaie d'ajouter le fuseau horaire à l'analyse ... ce qui ne fonctionne pas comme je le fais. D'où la question
j'en ai besoin dans UTC. Comment puis-je faire cela? Code>. J'aurais collé ce que j'ai déjà abordé, mais je doute que je doute que des gens veuillent lire 30 combinaisons différentes de la même chose.
Que se passe-t-il lorsque vous avez 2009-10-12T00: 00: 00.000-04: 00?