Convertit une Chaîne en Util Date à l'aide de simpleDateFormat ne fonctionne pas
Je vais avoir une Chaîne de la date en elle, j'ai besoin de hh:mm:ss pour être ajouté à la date, mais lorsque j'utilise dateFormat il me donne ParseException. Voici le code:
DateFormat sdff = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String startDate = "2013-09-25";
Date frmDate;
frmDate = sdff.parse(startDate);
System.out.println("from date = " + frmDate);
- Je obtenir de l'analyser exception pour l'abv code. Mais si je supprime le format hh:mm:ss à partir de la Date format, il fonctionne très bien et la sortie sera à partir de la date = Mer Sep 25 00:00:00 IST 2013.
Mais j'ai besoin de sortie comme à partir de la date = 2013-09-25 00:00:00
S'il vous plaît aider moi.
Merci à l'avance.
- Reportez-vous à docs.oracle.com/javase/6/docs/api/java/text/... pour les formats de date
- regardez ce LIEN
- Magicano: Merci, ça m'a aidé.
- Pour info, le gênants vieille date-heure classes telles que
java.util.Date
,java.util.Calendar
, etjava.text.SimpleDateFormat
sont maintenant héritage, supplantée par la java.de temps les classes intégré dans Java 8 et les versions ultérieures. Voir Tutoriel Oracle.
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin de 2 SimpleDateFormat objets pour que. Un pour analyser votre actuelle date de chaîne et l'autre au format analysée date de votre format souhaité.
Edit:-
Date
n'a pas un format en tant que tel. Vous pouvez seulement obtenir une représentation sous forme de Chaîne à l'aide de la SDF. Voici un extrait de la docsEt au sujet de votre problème afin de l'insérer dans la base de données, java
Date
peut être en tant que tel a persisté dans la base de données format de la date. Vous n'avez pas besoin de faire toute la mise en forme. Seulement lors de l'extraction de la date de retour de DB, vous pouvez utiliser leto_char()
méthode pour le mettre en forme.parse()
est utilisé pour convertirString
àDate
.Il exige que les formats d'être appariés sinon, vous aurez une exception.format()
est utilisé pour convertir la date en chaîne de date/heure.En fonction de votre exigence, vous devez utiliser au-dessus de deux méthodes.
tl;dr
Pour générer votre chaîne, de passer un
DateTimeFormatter
.Détails
Votre format doit correspondre à votre entrée, comme souligné par d'autres. Un formateur est nécessaire pour l'analyse de chaînes, un autre pour la génération de chaînes.
Aussi, vous êtes à l'aide de suranné classes.
java.temps
La méthode moderne utilise la java.temps classes ayant supplanté le gênants ancien héritage de date-heure classes.
LocalDate
La
LocalDate
classe représente une date uniquement de la valeur, sans le temps de la journée et sans fuseau horaire.Vous pouvez analyser une chaîne de produire un
LocalDate
. La norme ISO 8601 formats sont utilisés en java.le temps par défaut. Donc pas besoin de spécifier le format.Un fuseau horaire est crucial dans la détermination d'une date. Pour un moment donné, la date varie à travers le monde par zone. Par exemple, quelques minutes après minuit dans Paris, France est un nouveau jour, alors encore “hier” dans Montréal, Québec.
Si pas de temps horaire est spécifié, la JVM s'applique implicitement son actuel fuseau horaire par défaut. Par défaut peuvent être modifiés à tout moment, pour vos résultats peuvent varier. Mieux préciser votre choix/l'heure prévue de la zone explicitement comme un argument.
Spécifier un fuseau horaire nom dans le format de
continent/region
, commeAmerica/Montreal
,Africa/Casablanca
, ouPacific/Auckland
. Ne jamais utiliser de l'3-4 abréviation commeEST
ouIST
comme ils sont pas vrai fuseaux horaires, pas normalisée, et même pas unique(!).Si vous souhaitez utiliser la JVM par défaut en cours de fuseau horaire, demandez, et passé en argument. Si omis, la JVM par défaut actuel est appliqué implicitement. Mieux être explicite, comme la valeur par défaut peut être modifié à tout moment au cours de l'exécution par du code dans un thread de n'importe quelle application à l'intérieur de la JVM.
Ou préciser une date. Vous pouvez régler le mois en un certain nombre, avec sane numérotation 1-12 pour janvier-décembre.
Ou, mieux, utiliser le
Mois
enum objets pré-définis, une pour chaque mois de l'année. Astuce: Utilisez cesMonth
objets dans votre base de code plutôt qu'un simple nombre entier afin de rendre votre code plus de l'auto-documentation, assurer la validité des valeurs, et de fournir type de sécurité.Formats
Si vous voulez obtenir le premier moment de la journée pour cette date, appliquer un fuseau horaire. Comme mentionné ci-dessus, la date et l'heure de la journée exiger le contexte d'une zone de temps ou de décalage-de-UTC pour représenter un moment précis sur la chronologie.
Ne pas assumer la journée démarre à 00:00:00. Les Anomalies telles que des Heure d'été (DST) moyenne de la journée peut commencer à un autre moment comme 01:00:00. Laissez java.temps déterminer le moment de la journée.
Si vous voulez de sortie dans le format indiqué dans votre Question, vous pouvez définir votre propre format. Je vous mets en garde contre l'omission de la zone de temps ou de compenser les infos de la chaîne de résultat, sauf si vous êtes absolument certain de l'utilisateur peut discerner sa signification dans le contexte plus.
Sur java.temps
La java.temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
,Agenda
, &SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenance, conseille la migration vers le java.le temps classes.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
Avec un Pilote JDBC respecter JDBC 4.2 ou plus tard, vous pouvez l'échanger java.temps objets directement avec votre base de données. Pas besoin de chaînes ou de java.sql.* classes.
Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
,YearWeek
,YearQuarter
, et plus.C'est parce que votre chaîne est
yyyy-MM-dd
, mais le format de la date u définie estyyyy-MM-dd hh:mm:ss
.Si vous changez de chaîne startDate à
yyyy-MM-dd hh:mm:ss
il devrait fonctionnerCela renvoie un type de Date
La question est
'2013-09-25'
date ne peut pas être analysé à "yyyy-MM-dd hh:mm:ss
' format de date. Vous devez d'abord analyser date suivante dans son qui correspondent au motif qui est'yyyy-MM-dd'
.Une fois qu'il est analysé à son bon modèle, vous pouvez fournir le modèle de date que vous préférez, qui est
'yyyy-MM-dd hh:mm:ss'
.Maintenant, vous pouvez formater le
Date
et il sera de sortie de la date que vous avez préféré.SimpleDateFormat
peuvent être utilisés pour parvenir à ce résultat.Essayer ce code.
SimpleDateFormat
classe. Au moins, pas comme la première option. Et pas sans réserve. Aujourd'hui, nous avons tellement mieux enjava.time
, le moderne Java date et l'heure de l'API et sonDateTimeFormatter
.