2010-12-14 5 views
2

J'ai reçu la date en tant que '14-Dec-2010' Je veux obtenir le format numérique du mois pour la date donnée. c'est., Je veux convertir la date en '14-12-2010'.convertir le format de date

Répondre

1
DateFormat format = new SimpleDateFormat("dd-MMM-yyyy"); 
Date date= format.parse("14-Dec-2010"); 

Voici comment vous obtiendrez l'objet Date maintenant vous pouvez l'imprimer dans n'importe quel format.
Remarque: mois commence à partir de 0, donc pour Dec il serait 11

+0

Il ne fonctionne pas et donne exception: java.text.ParseException: Date Unparseable: « 14-Dec-2010 –

+0

@hilal, fonctionne pour moi (Java OpenJDK 1.6) –

+0

Je ne fais rien. différent juste copier et coller :) et cela ne fonctionne pas.et votre code ne fonctionne pas non plus pour moi.Je ne connais pas la raison pour laquelle il jette juste une exception java.text.ParseException: Date irréparable: "14-Dec -2010 ".(OpenJDK java 1.6) –

5
DateFormat inFm = new SimpleDateFormat("d-MMM-y"); 
DateFormat outFm = new SimpleDateFormat("d-M-yyyy"); 
Date date = inFm.parse("14-Dec-2010"); 
String output = outFm.format(date); 

En général, vous devez utiliser un type datetime comme Date interne, puis transformer en String au moment de la sortie.

+0

il va imprimer 14-11-2010 Je pense que –

+0

@org, non, ce ne sera pas; essayez-le. 'SimpleDateFormat' sait utiliser des index basés sur 1. Vous pensez probablement à 'Calendar', qui utilise un index de mois basé sur 0. –

+0

oui l'a observé Merci –

1
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class DateFormatter { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     Date date = new Date("14-Dec-2010"); //deprecated. change it to your needs 
     DateFormat df = new SimpleDateFormat("dd-MM-yyyy"); 
     System.out.println(df.format(date)); 

    } 

} 
+0

Ce constructeur est déprécié. Il est préférable d'être explicite sur le format que vous attendez. –

1

Je pense que cette conversion SQL devrait fonctionner

SELECT CONVERT (datetime, '14 2010' -déc, 105)

0

Évitez d'utiliser les classes datetime vieux gênants livrés avec plus tôt versions de Java. Ils sont mal conçus et déroutants.

java.time

Les anciennes classes sont supplantés par le cadre de java.time.

Pour une valeur de date uniquement sans heure du jour et sans fuseau horaire, utilisez la classe LocalDate.

Analyser l'entrée de chaîne à l'aide de DateTimeFormatter.

String input = "14-Dec-2010"; 

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy"); 
LocalDate localDate = LocalDate.parse(input , formatter); 

Pour générer une chaîne dans un autre format, définissez un autre formateur.

DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("dd-MM-yyyy"); 
String output = localDate.format(formatter2); 

Mieux encore, laissez DateTimeFormatter localiser automatiquement.

Locale l = Locale.CANADA_FRENCH ; // Or Locale.US, Locale.ITALY, etc. 
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT).withLocale(l); 
String output = localDate.format(f); // Generates String in a localized format. 

SQL

Pour SQL juste passer des objets, ne pas utiliser des chaînes. Passez LocalDate via setObject sur un PreparedStatement si votre pilote JDBC est conforme à la spécification JDBC 4.2.

myPrepStmt.setObject(localDate); 

Sinon, revenir à l'ancienne classe java.sql.Date en utilisant de nouvelles méthodes de conversion ajoutées aux anciennes classes.

java.sql.Date sqlDate = java.sql.Date.from(localDate); 
myPrepStmt.setDate(sqlDate);