Java - Date de constructeur accepte une Chaîne de Date, Mais obsolète. Essayé des solutions de rechange, mais pas de chance
String temp_date="07/28/2011 11:06:37 AM";
Date date = new Date(temp_date); //Depricated
SimpleDateFormat sdf = new SimpleDateFormat("MMM-dd-yyyy hh:mm:ss");
String comp_date= sdf.format(date);
System.out.println(comp_date);
Cela fonctionne, Mais Si j'utilise quelque chose comme cela
String temp_date="07/28/2011 11:06:37 AM";
try{
SimpleDateFormat sdf = new SimpleDateFormat("MMM-dd-yyyy hh:mm:ss");
Date comp_date= sdf.parse(temp_date);
System.out.println(comp_date);
}catch(Exception e){
System.out.println(e);
}
Cette exception est levée:
java.text.ParseException: Unparseable date: "07/28/2011 11:06:37 AM"
Quant à la java.util.Date déconseillé, vous voudrez peut-être commencer en prenant un coup d'oeil à l'abstraite java.util.Calendrier de la classe et de sa mise en œuvre directe: java.util.GregorianCalendar
J'ai entendu parler de Beanutils de Apache commons pour DateConversion. Incase vous avez utilisé beanutils - Pour le cas ci-dessus, comment pourrait-elle ressembler?
oui, pour l'analyse/mise en forme puis DateFormat est la réponse. Je suggère GC au lieu de la simple Date datetime manipulation. Je ne suis pas familier avec Joda Temps, je vais regarder. Merci
Calendar
n'est pas très utile quand il s'agit de l'analyse/mise en forme de dates à partir de/à String
. Peu importe, je préfère Joda Time: joda-time.sourceforge.net.J'ai entendu parler de Beanutils de Apache commons pour DateConversion. Incase vous avez utilisé beanutils - Pour le cas ci-dessus, comment pourrait-elle ressembler?
oui, pour l'analyse/mise en forme puis DateFormat est la réponse. Je suggère GC au lieu de la simple Date datetime manipulation. Je ne suis pas familier avec Joda Temps, je vais regarder. Merci
OriginalL'auteur pingu | 2011-07-29
Vous devez vous connecter pour publier un commentaire.
Votre modèle d'analyse est erronée. Elle ne correspond pas à la date de la représentation sous forme de chaîne. Le
MMM
désigne un 3-lettre localisée mois abréviation, alors que vous avez 2 chiffres du numéro du mois dans votre date réelle, vous devezMM
. Vous avez également des barres obliques/
date/mois/année séparateur et non-
. AM/PM repère que vous avez aussi besoin d'una
par la suite pour que le droithh
peut être analysé.Cela devrait fonctionner:
Pour une explication de ces modèles, lire la
SimpleDateFormat
javadoc.Je crois que votre béton à l'exigence fonctionnelle est de convertir la chaîne de date, comme spécifié par le modèle
MM/dd/yyyy hh:mm:ss a
dans une autre chaîne de date format, comme spécifié par le modèleMMM-dd-yyyy hh:mm:ss
. Dans ce cas, vous devriez alors avoir deuxSimpleDateFormat
des cas, qui analyse la chaîne de caractères dans le modèle donné à unDate
et l'autre des formats de l'analyseDate
pour le modèle donné. Cela devrait faire ce que vous voulez:Noter que j'ai changé
hh
dans la sortie de laHH
parce qu'elle serait autrement finissent dans les 1-12 heures de représentation sans AM/PM du marqueur. LeHH
la représente que de 0 à 23 heures.Vous êtes les bienvenus. Puisque vous êtes nouveau ici, s'il vous plaît ne pas oublier de marquer la réponse acceptée à chaque fois qu'il a aidé (la plupart) en réponse à la question. Voir aussi meta.stackexchange.com/questions/5234/...
OriginalL'auteur BalusC
Le format que vous avez donné le SimpleDateFormat utilise
-
entre le mois, la date et l'année. Votre chaîne utilise des barres obliques.OriginalL'auteur bdares
Au premier coup d'oeil, il semble que si votre chaîne de format est incorrect.
MMM -- Vous avez indiqué ce pour le mois, mais vous n'êtes pas le passage d'un 3 char mois.
Essayez MM et voir si cela aide.
Prendre un coup d'oeil à ce pour quelques autres format de date de l'information:
http://www.java2s.com/Tutorial/Java/0040__Data-Type/SimpleDateFormat.htm
OriginalL'auteur Jeffrey Kevin Pry