210 votes

Convertir une chaîne en objet de calendrier en Java

Je suis nouveau en Java, travaille généralement avec PHP

J'essaie de convertir cette chaîne:

Lundi 14 mars 16:02:37 GMT 2011

Dans un objet de calendrier afin que je puisse facilement extraire l'année et le mois comme ceci:

 String yearAndMonth = cal.get(Calendar.YEAR)+cal.get(Calendar.MONTH);
 

Serait-ce une mauvaise idée de l'analyser manuellement? Vous utilisez une méthode de sous-chaîne?

Tout conseil aiderait merci!

457voto

Jigar Joshi Points 116533
     Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.EN_US);
    cal.setTime(sdf.parse("Mon Mar 14 16:02:37 GMT 2011"));// all done
 

remarque: définissez Locale selon votre environnement / vos besoins


Voir également

14voto

Jon Skeet Points 692016

Eh bien, je pense que ce serait une mauvaise idée de reproduire le code qui est déjà présent dans des classes comme l' SimpleDateFormat.

D'autre part, personnellement, je vous conseille d'éviter Calendar et Date entièrement si vous le pouvez, à l'aide de Joda Time au lieu de cela, comme un bien mieux conçu date et l'heure de l'API. Par exemple, vous devez être conscient que l' SimpleDateFormat est pas thread-safe, vous avez besoin de thread habitants, la synchronisation, ou une nouvelle instance à chaque fois que vous l'utilisez. Joda les analyseurs et les formateurs sont thread-safe.

6voto

Philip Points 38

SimpleDateFormat est génial, il suffit de noter que HH est différent de hh lorsque vous travaillez avec des heures. HH reviendra 24 heures sur 24 et hh 12 heures.

Par exemple, ce qui suit retournera l'heure 12 heures:

 SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
 

Bien que cela revienne 24 heures:

 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm aa");
 

3voto

John Vint Points 19804

Oui, ce serait une mauvaise pratique de l'analyser soi-même. Jetez un coup d'œil à SimpleDateFormat , cela transformera la chaîne en date et vous pourrez définir la date dans une instance de calendrier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X