web-dev-qa-db-fra.com

java crée un objet de date à l'aide d'une chaîne de valeur

J'utilise ceci pour obtenir l'heure actuelle:

Java.util.Calendar cal = Java.util.Calendar.getInstance();
    System.out.println(new Java.text.SimpleDateFormat("EEEE, dd/MM/yyyy/hh:mm:ss")
            .format(cal.getTime()));

Je veux mettre la valeur (que je l'imprime) dans un objet de date, j'ai essayé ceci:

Date currentDate = new Date(value);

mais Eclipse me dit que cette fonction n'est pas bonne.

Éditer La value est la valeur que je vous ai imprimée avec system.out.println

23
Marco Dinatsoli

Chaque fois que vous souhaitez convertir un objet String en Date, utilisez SimpleDateFormat#parse.
Essayez d'utiliser 

String dateInString = new Java.text.SimpleDateFormat("EEEE, dd/MM/yyyy/hh:mm:ss")
        .format(cal.getTime())
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, dd/MM/yyyy/hh:mm:ss");
Date parsedDate = formatter.parse(dateInString);

La chose additionnelle est que si vous voulez convertir une Date en String, vous devez utiliser la fonction SimpleDateFormat#format.
Maintenant, le point pour vous est new Date(String) est obsolète et n'est pas recommandé pour le moment. Maintenant, chaque fois que quelqu'un souhaite analyser, il doit utiliser SimpleDateFormat#parse.

référez-vous au document officiel pour plus de modèles de date et d'heure utilisés dans les options de SimpleDateFormat.

54
Freak

Utilisez la méthode d'analyse SimpleDateFormat:

import Java.text.DateFormat;
import Java.text.SimpleDateFormat;

String inputString = "11-11-2012";
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date inputDate = dateFormat.parse(inputString, dateFormat );

Puisque nous avons Java 8 avec LocalDate, je suggérerais d'utiliser next:

import Java.time.LocalDate;
import Java.time.format.DateTimeFormatter;

String inputString = "11-11-2012";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate inputDate = LocalDate.parse(inputString);
30
alexey28

EN PREMIER, CONNAISSEZ LA RAISON POURQUOI Eclipse IS FAIT DONC.

Date n'a qu'un seul constructeur Date (date longue) qui demande la date dans le type de données long.

Le constructeur que vous utilisez

Date (String s) Obsolète. À partir de la version 1.1 du JDK, remplacé par DateFormat.parse (String s).

C'est pourquoi Eclipse indique que cette fonction n'est pas bonne.

Voir ce document officiel 

http://docs.Oracle.com/javase/6/docs/api/Java/util/Date.html


Méthodes obsolètes de votre contexte - Source - http://www.coderanch.com/t/378728/Java/java/Deprecated-methods 

Il existe plusieurs raisons pour lesquelles une méthode ou une classe peut devenir obsolète. Une API peut ne pas être facilement extensible sans rompre la compatibilité avec les versions antérieures et doit donc être remplacée par une API plus puissante (par exemple, Java.util.Date est obsolète en faveur de Calendar ou du modèle d’événement Java 1.0). Cela peut également simplement ne pas fonctionner ou produire des résultats incorrects dans certaines circonstances (certaines classes de flux Java.io, par exemple, ne fonctionnent pas correctement avec certains codages). Parfois, une API est simplement mal conçue (SingleThreadModel dans l'API de servlet) et n'est remplacée par rien. Et certains des premiers appels ont été remplacés par des méthodes compatibles "Java Bean" (taille par getSize, bornes par getBounds, etc.)


LES SOLUTIONS SEVRALES SE TROUVENT JUSTE GOOGLE IT--

Vous pouvez utiliser date (date longue) En convertissant votre date String en longues millisecondes et stackoverflow a autant de publications à cet effet.

conversion d'une chaîne de date en millisecondes en Java

4
Nikhil Agrawal
 import Java.util.Date;
 import Java.text.SimpleDateFormat;

Ci-dessus, la méthode d'importation, ci-dessous, le code simple pour Date

 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date date = new Date();

 system.out.println((dateFormat.format(date))); 
3
akki0996

Essaye ça :-

try{
        String valuee="25/04/2013";
        Date currentDate =new SimpleDateFormat("dd/MM/yyyy").parse(valuee);
        System.out.println("Date is ::"+currentDate);
        }catch(Exception e){
            System.out.println("Error::"+e);
            e.printStackTrace();
        }

Sortie:-

   Date is ::Thu Apr 25 00:00:00 GMT+05:30 2013

Votre valeur doit être au format approprié.

Dans votre question, vous avez également demandé ce qui suit: - 

   Date currentDate = new Date(value);

Ce style de constructeur de date est déjà obsolète.Ainsi, il n’est plus utilisé. Étant donné que Date a 6 constructeur. En savoir plus

2

Voici la solution optimisée pour le faire avec la méthode SimpleDateFormatparse().

SimpleDateFormat formatter = new SimpleDateFormat(
        "EEEE, dd/MM/yyyy/hh:mm:ss");
String strDate = formatter.format(new Date());

try {
    Date pDate = formatter.parse(strDate);
} catch (ParseException e) { // note: parse method can throw ParseException
    e.printStackTrace();
}

Peu de choses à remarquer

  • Il n'est pas nécessaire de créer une instance de calendrier pour obtenir la date actuelle & Time à la place, utilisez new Date()
  • De plus, ne nécessite pas 2 instances de SimpleDateFormat comme Trouvé dans la réponse la plus votée pour cette question. C'est juste un gaspillage de mémoire
  • De plus, intercepter une exception générique telle que Exception est une mauvaise pratique quand on sait que la méthode parse n'a qu'une chance de lancer une ParseException. Nous devons être aussi précis que possible lorsque nous traitons des exceptions. Vous pouvez vous référer, jette Exception mauvaise pratique?
1
Hamzeen Hameem

C'est parce que la valeur à venir String ( Le constructeur d'objet Date Java pour obtenir une chaîne est obsolète )

et Date(String) est obsolète.

Examinez jodatime ou vous pouvez placer @SuppressWarnings ({«deprecation»}) en dehors de la méthode appelant le constructeur Date(String).

0
Suresh Atta

Ce que vous essayez essentiellement de faire est la suivante: -

Calendar cal = Calendar.getInstance();
Date date = cal.getTime();

La raison en est que la String que vous imprimez est simplement une représentation String de la Date dans le format requis. Si vous essayez de le convertir en date, vous finirez par faire ce que j'ai mentionné ci-dessus.

Formater Date ( cal.getTime () ) en String et essayer de récupérer une Date - n’a aucun sens. Date n'a pas de format en tant que tel. Vous ne pouvez obtenir une représentation String de cela qu'avec le SDF.

0
SudoRahul