web-dev-qa-db-fra.com

Comment formater un fichier Java.sql.date dans ce format: "MM-jj-aaaa"?

Je dois obtenir un fichier Java.sql.date au format suivant: "MM-jj-aaaa", mais il me faut un fichier Java.sql.date pour pouvoir le placer dans une table en tant que date. Donc, il ne peut pas s'agir d'une chaîne après la mise en forme, elle doit se transformer en objet Java.sql.date. 

C'est ce que j'ai essayé jusqu'à présent:

Java.util.Date 
today=new Date();
String date = formatter.format(today); 
Date todaydate = formatter.parse(date);
Java.sql.Date fromdate = new Java.sql.Date(todaydate.getTime());
Java.sql.Date todate=new Java.sql.Date(todaydate.getTime()); 
String tempfromdate=formatter.format(fromdate);
String temptodate=formatter.format(todate); 
Java.sql.Date fromdate1=(Java.sql.Date) formatter.parse(tempfromdate); 
Java.sql.Date todate1=(Java.sql.Date) formatter.parse(temptodate);
5
Pradeep

Vous pouvez le faire de la même manière que Java.util.Date (puisque Java.sql.Date est une sous-classe de Java.util.Date) avec un SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat(
    "MM-dd-yyyy");
int year = 2014;
int month = 10;
int day = 31;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1); // <-- months start
                                    // at 0.
cal.set(Calendar.DAY_OF_MONTH, day);

Java.sql.Date date = new Java.sql.Date(cal.getTimeInMillis());
System.out.println(sdf.format(date));

La sortie est la valeur attendue

10-31-2014

7
Elliott Frisch

Utilisez ci-dessous le code que j'ai converti la date du jour. apprendre et essayer avec votre code 

          Date today = new Date();

        //If you print Date, you will get un formatted output
        System.out.println("Today is : " + today);

        //formatting date in Java using SimpleDateFormat
        SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy");
        String date = DATE_FORMAT.format(today);
        System.out.println("Today in MM-dd-yyyy format : " + date);

            Date date1 = formatter.parse(date);
    System.out.println(date1);
    System.out.println(formatter.format(date1));
2
Nirav Prajapati

Une solution plus simple consisterait simplement à convertir la date de la requête en Epoch avant de comparer.

SELECT date_column from YourTable where UNIX_TIMESTAMP(date_column) > ?;

Ensuite, passez simplement date.getTime() lors de la liaison de la valeur à ?

NOTE: La fonction UNIX_TIMESTAMP est pour MySQL. Vous trouverez également ces fonctions pour d'autres bases de données.

1
Varun Achar
Java.util.Date today=new Date();
Java.sql.Date date=new Java.sql.Date(today.getTime()); //your SQL date object
SimpleDateFormat simpDate = new SimpleDateFormat("MM-dd-yyyy");
System.out.println(simpDate.format(date)); //output String in MM-dd-yyyy

Notez que peu importe que votre date soit au format mm-jj-aaaa ou dans tout autre format, lorsque vous comparez une date (Java.sql.Date ou Java.util.Date), elles seront toujours comparées sous la forme des dates représenter. Le format de la date est simplement un moyen de régler ou d’obtenir la date au format souhaité.

0
Mustafa sabir

Pour tous ceux qui lisent ceci en 2017 ou plus tard, la solution moderne utilise LocalDate à partir de Java.time, l'API de date et heure moderne de Java, au lieu de Java.sql.Date. Ce dernier est depuis longtemps dépassé.

Formater votre date

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-uuuu", Locale.US);
    LocalDate fromDate = LocalDate.now(ZoneId.of("Asia/Kolkata"));
    String tempFromDate = fromDate.format(formatter);
    System.out.println(tempFromDate);

Cela imprime quelque chose comme

11-25-2017

Ne confondez pas la date avec sa représentation textuelle

Ni les objets LocalDate ni Java.sql.Date n’ont de format inhérent. Essayez donc - et essayez si nécessaire - de séparer les deux concepts, la date d'un côté et sa présentation à un utilisateur de l'autre.

C’est comme int et tous les autres types de données. Un int peut avoir une valeur de 4284. Vous pouvez le formater en 4 284 ou 4 284, 004284 ou même en représentation hexadécimale. Cela ne modifie en rien la int elle-même. De la même manière, le formatage de votre date n'affecte pas votre objet de date. Utilisez donc la chaîne pour la présentation à l'utilisateur et utilisez la variable LocalDate pour la stocker dans votre base de données (un pilote JDBC moderne ou un autre moyen moderne d'accès à la base de données sera ravi de le faire, par exemple via PreparedStatement.setObject()).

Utiliser un fuseau horaire explicite

Obtenir la date du jour est une opération sensible aux fuseaux horaires, car ce n'est pas la même date dans tous les fuseaux horaires du monde. Je vous recommande fortement de rendre ce fait explicite dans le code. Dans mon extrait de code, j'ai utilisé le fuseau horaire Asie/Kolkata, veuillez indiquer votre fuseau horaire. Vous pouvez utiliser ZoneId.systemDefault() pour le paramètre de fuseau horaire de votre machine virtuelle, mais sachez que ce paramètre peut être modifié sous nos pieds par d’autres parties de votre programme ou par d’autres programmes exécutés sur la même machine virtuelle, ce qui le rend fragile.

0
Ole V.V.

Le formatter.parse ne vous donnera qu'un Java.util.Date pas un Java.sql.Date

une fois que vous avez un Java.util.Date, vous pouvez le convertir en Java.sql.Date en faisant

Java.sql.Date sqlDate = new Java.sql.Date (normalDate.getTime ());

Notez également que no dates ont un format intégré, c’est en réalité une classe construite sur un nombre.

0
Scary Wombat