L'analyse de la date à partir du Calendrier en Java
Je vais avoir de fonction suivantes
public static Date parseDate(String date, String format) throws ParseException
{
SimpleDateFormat formatter = new SimpleDateFormat(format);
return formatter.parse(date);
}
Je suis en utilisant ce qui suit dans mon code
Calendar eDate = Calendar.getInstance();
eDate.add(Calendar.DAY_OF_MONTH,10);
Date date = null;
try {
date = parseDate(eDate.getTime().toString(),"yyyy-MM-dd hh-mm-ss");
} catch (ParseException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
Mais il est en train de jeter -
java.text.ParseException: Unparseable date
Quel est le problème ici?
La date est probablement unparseable. Initialisation (pas de construction) eDate pourrait aider.
Lire @Carl Smotricz de réponse....mais comme pour le format de votre
Oups 😛 Ouais mais j'ai essayé de changer de MM, mais toujours la même erreur qui est à venir
Je fixe la chaîne de format dans le post original afin de réduire la confusion chez les lecteurs.
Suis en cours d'exécution, les gars. Merci une tonne 🙂 Utilisé BaluC 's solution
Lire @Carl Smotricz de réponse....mais comme pour le format de votre
"yyyy-mm-dd hh-mm-ss
vous êtes en train de lire les minutes (mm) au lieu de mois (MM)...juste une pensée!Oups 😛 Ouais mais j'ai essayé de changer de MM, mais toujours la même erreur qui est à venir
Je fixe la chaîne de format dans le post original afin de réduire la confusion chez les lecteurs.
Suis en cours d'exécution, les gars. Merci une tonne 🙂 Utilisé BaluC 's solution
OriginalL'auteur Vishal | 2010-07-14
Vous devez vous connecter pour publier un commentaire.
Le format n'est pas stocké dans le
Date
. Il est stocké dans leString
. LeDate#toString()
renvoie une fixe format qui est décrit dans son Javadoc.Faire la mise en forme uniquement au moment vous avez besoin pour afficher une
Date
à un homme, comme unString
.Noter que
MM
stands pendant des mois et desmm
pour les minutes. Voir aussiSimpleDateFormat
javadoc.Je n'ai'n savoir que l'objet de Calendrier a été automatiquement converti en un Jour avec getTime() +1
OriginalL'auteur BalusC
Vous serez heureux d'apprendre qu'il n'y a pas besoin d'analyser une date à partir d'un
Calendar
objet: La façon de s'en sortir unDate
d'unCalendar
est par l'intermédiaire de lagetTime()
méthode.EDIT:
À la sortie de la date de
eDate
dans le style ISO format:Qui est non testé, mais je pense que cela devrait fonctionner.
Oui mais j'en ai besoin formaté en "aaaa-mm-jj hh-mm-ss"
Vous pouvez utiliser
Date date = calendar.getTime();
et puis la formater à l'aidenew SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(date);
Alors il est temps d'aborder la prochaine étape. Vous avez une Date, vous voulez une Chaîne de caractères, à ce point que vous voulez utiliser
SimpleDateFormat.format()
sur elle. Je vais mettre ça dans ma réponse...OriginalL'auteur Carl Smotricz
Vous êtes en train de mise en forme avec le format par défaut de
java.util.Date
, puis analyse avec potentiellement un format différent. Vous devez également modifier votre chaîne de format, il est actuellement à l'aide d'une horloge de 12 heures avec aucun indicateur am/pm, et à quelques minutes deux fois. Je pense que tu veux dire: "yyyy-MM-dd HH-mm-ss"Oui, c'est parce que vous êtes à la mise en forme avec java.util.Date.toString.
OriginalL'auteur Jon Skeet
Ne pas utiliser
toString()
pour quelque chose comme ça.toString()
doit être utilisé uniquement pour les messages de débogage.Utilisation
DateFormat.format(..)
pour produire une chaîne de caractères dans une façon prévisible.OriginalL'auteur Bozho
Vous êtes l'insertion d'un Zoulou Timestamp (UNIX),
getTime()
renvoie le nombre de millisecondes écoulées depuis leJanuary 1, 1970, 00:00:00 GMT
. Ensuite, vous pouvez définir le format queyyyy-mm-dd hh-mm-ss
et essayer d'analyser le timestamp avec ce motif. Qui ne correspond pas.Vous pouvez utiliser
Date date = calendar.getTime();
et puis la formater à l'aidenew SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(date);
OriginalL'auteur Christopher Klewes
vous pouvez simplement utiliser la date renvoyée par le calendrier, au lieu de le transformer en chaîne de caractères et retourne à une date (apparemment un mauvais format de date). La date peut être obtenue par:
Il semble y avoir aucun besoin de SimpleDateFormat dans votre cas.
Calendar#getTime()
retournejava.util.Date
, paslong
.merci, fixe
J'ai été en supposant que l'exemple de code était un cas de test, pas à proprement parler un code de production. Il avait le format de droit, c'est en fait un très bon test.
OriginalL'auteur Eyal Schneider
Vérifier la Date.la méthode toString ().
L'api états qu'il retourne dans
le format:
qui est:
Vous raconter l'analyseur à attendre:
2004-01-28 14-22-07
OriginalL'auteur Chris Cudmore
renvoie une représentation sous forme de Chaîne d'une date dans ce format:
dow mon dd hh:mm:ss zzz aaaa (voir la java.util.Date de l'API).
Vous essayez d'analyser une date à l'aide du format:
aaaa-mm-jj hh-mm-ss .
Le code est correctement jeter le ParseException.
OriginalL'auteur CodeClimber