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);
3 Réponses :
Le code suivant fonctionne pour moi
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
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 P> BlockQuote>
SO etc / GMT est en cours de traduction en tant que GMT + 00: 00 p>
si vous voulez vraiment coller à l'analyse
"2011-09-02 10:26:35 etc etc. / GMT " strong> Suivant ensuite aidera également sans même envisager de déterminer le changement de fuseau horaire explicit: p> xxx pré> fonctionne bien. P> P>
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".
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);
Laissez le petit
z code> out. Il ne considérera pas le fuseau horaire alors. Votre code fonctionnera bien!