8
votes

Analyser une date avec le fuseau horaire "etc / gmt"

Ma première tentative était la suivante:

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
TimeZone timeZone = TimeZone.getTimeZone("Etc/GMT");
formatter.setTimeZone(timeZone);
Date date = formatter.parse(string);


1 commentaires

Laissez le petit z out. Il ne considérera pas le fuseau horaire alors. Votre code fonctionnera bien!


3 Réponses :


0
votes

Le code suivant fonctionne pour moi xxx


2 commentaires

Damnit, pour une raison quelconque, je viens de recevoir "java.text.parseException: date imparable:" 2011-09-02 10:26:35 etc / gmt "". Comment se peut-il? J'ai déjà vérifié que GettimeZone () ne renvoie pas NULL ou quelque chose comme ça.


SimpleDateFormat SDF = Nouveau SimpleDateFormat ("Yyyy-MM-DD HH: MM: SS"); Il fonctionnera supprimer les informations sur la zone de Formater



0
votes

Cela n'a pas fonctionné pour moi non plus la chose est que j'ai essayé de définir le fuseau horaire de SimpleDateDateDormetter à "etc / gmt" puis formaté une nouvelle date ici est la sortie:

2011-11-30 10:46:32 GMT + 00: 00

SO etc / GMT est en cours de traduction en tant que GMT + 00: 00

si vous voulez vraiment coller à l'analyse "2011-09-02 10:26:35 etc etc. / GMT " Suivant ensuite aidera également sans même envisager de déterminer le changement de fuseau horaire explicit: xxx

fonctionne bien.


1 commentaires

Je pense que le point de la question n'était pas d'ignorer le fuseau horaire, mais de le prendre en compte. Votre code donnera des résultats incorrects si la chaîne contient par exemple. Timezone "Amérique / Los_Angeles".



3
votes

Vous ne savez pas si cette question vous est toujours pertinente pour vous, mais si vous utilisez Joda Time, cela fonctionnera:

String s = "2011-11-29 10:40:24 Etc/GMT";

// split the input in a date and a timezone part            
int lastSpaceIndex = s.lastIndexOf(' ');
String dateString = s.substring(0, lastSpaceIndex);
String timeZoneString = s.substring(lastSpaceIndex + 1);

// convert the timezone to an actual TimeZone object
// and feed that to the formatter
TimeZone zone = TimeZone.getTimeZone(timeZoneString);
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
formatter.setTimeZone(zone);

// parse the timezoneless part
Date date = formatter.parse(dateString);


0 commentaires