web-dev-qa-db-fra.com

Comment obtenir la date d'aujourd'hui?

En d'autres termes, je veux une fonctionnalité qui fournit Joda-Time:

today = today.withTime(0, 0, 0, 0);

mais sans Joda-Time, uniquement avec Java.util.Date.

Des méthodes telles que .setHours (), etc. sont obsolètes. Y at-il plus moyen correct?

35
Plastic Rabbit
Date today = new Date();
today.setHours(0); //same for minutes and seconds

Puisque les méthodes sont obsolètes, vous pouvez le faire avec Calendar:

Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0); // same for minutes and seconds

Et si vous avez besoin d’un objet Date à la fin, appelez simplement today.getTime()

51
Bozho
Date today = DateUtils.truncate(new Date(), Calendar.DAY_OF_MONTH);

DateUtils de Apache Commons-Lang. Attention au fuseau horaire!

10
Tomasz Nurkiewicz
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date));

trouvé ici

8
Pontios

Y at-il plus moyen correct?

Oui il y a.

LocalDate.now( 
    ZoneId.of( "America/Montreal" ) 
).atStartOfDay(
    ZoneId.of( "America/Montreal" )
)

Java.time

Java 8 et versions ultérieures intègrent désormais le nouveau framework Java.time Voir Didacticiel . Inspiré de Joda-Time, défini par la JSR 310 et étendu par le projet ThreeTen-Extra.

Exemples

Quelques exemples suivent, en utilisant Java.time. Notez comment ils spécifient un fuseau horaire. Si omis, le fuseau horaire actuel de votre machine virtuelle Java. Cette valeur par défaut peut varier, voire même changer à tout moment pendant l'exécution. Je vous suggère donc de spécifier explicitement un fuseau horaire plutôt que de vous fier implicitement à la valeur par défaut.

Voici un exemple de date seulement, sans heure ni fuseau horaire.

ZoneId zonedId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zonedId );
System.out.println( "today : " + today );

aujourd'hui: 2015-10-19

Voici un exemple d'obtention de la date et de l'heure actuelles.

ZoneId zonedId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zonedId );
System.out.println( "zdt : " + zdt );

Quand exécuté:

zdt: 2015-10-19T18: 07: 02.910-04: 00 [Amérique/Montréal]

Premier moment du jour

La question demande la date et l'heure où l'heure est définie sur zéro. Cela suppose que le premier moment de la journée est toujours l'heure 00:00:00.0 mais que ce n'est pas toujours le cas. L'heure d'été (DST) et peut-être d'autres anomalies signifient que la journée peut commencer à une heure différente, telle que 01:00.0

Heureusement, Java.time dispose d’une fonction permettant de déterminer le premier moment de la journée correspondant à un fuseau horaire particulier, LocalDate::atStartOfDay . Voyons du code utilisant la LocalDate nommée today et la ZoneId nommée zoneId à partir du code ci-dessus.

ZonedDateTime todayStart = today.atStartOfDay( zoneId );

zdt: 2015-10-19T00: 00: 00-04: 00 [Amérique/Montréal]

L'interopérabilité

Si vous devez disposer d'un fichier Java.util.Date à utiliser avec les classes non encore mises à jour pour fonctionner avec les types Java.time, convertissez-le. Appelez la méthode Java.util.Date.from( Instant instant ) .

Java.util.Date date = Java.util.Date.from( zdt.toInstant() );

À propos de Java.time

Le cadre Java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciennes classes gênantes héritées _ date-heure telles que Java.util.Date , Calendar _, & SimpleDateFormat .

Le projet Joda-Time , désormais en mode { mode maintenance }, conseille la migration vers les classes Java.time .

Pour en savoir plus, consultez le Oracle Tutorial . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .

Vous pouvez échanger des objets Java.time directement avec votre base de données. Utilisez un pilote JDBC compatible avec JDBC 4.2 ou une version ultérieure. Pas besoin de chaînes, pas besoin de Java.sql.* classes.

Où obtenir les classes Java.time? 

Le projet ThreeTen-Extra étend Java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels ajouts à Java.time. Vous pouvez y trouver des classes utiles telles que Interval _, YearWeek , YearQuarter _ et plus _.

8
Basil Bourque

Si vous voulez minuit (0h00) pour la date actuelle, vous pouvez simplement utiliser le constructeur par défaut et mettre à zéro les tranches horaires:

Date today = new Date();
today.setHours(0); today.setMinutes(0); today.setSeconds(0);

edit : met à jour avec Calendar puisque ces méthodes sont obsolètes

Calendar today = Calendar.getInstance();
today.clear(Calendar.HOUR); today.clear(Calendar.MINUTE); today.clear(Calendar.SECOND);
Date todayDate = today.getTime();
6
Daniel DiPaolo
import Java.time.DayOfWeek;
import Java.time.LocalDate;
import Java.time.Month;
import Java.util.Calendar;
import Java.util.Date;


/**
 * * Java Program to get current day, month, year, and dayOfweek in both Java 8
 * * and before e.g. JDK 1.6 and JDK 1.7
 */

/**
 * @author AJMAL SHA
 *
 */
public class Test {
    public static void main(String[] args) { // Before Java 8
        Date today = new Date();
        Calendar cal = Calendar.getInstance();
        cal.setTime(today); // don't forget this if date is arbitrary
        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); // 1 being Sunday
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        int dayOfYear = cal.get(Calendar.DAY_OF_YEAR);
        int month = cal.get(Calendar.MONTH); // 0 being January
        int year = cal.get(Calendar.YEAR);
        System.out.println("current date : " + today);
        System.out.println("dayOfWeek from date in Java 6 : " + dayOfWeek);
        System.out.println("dayOfMonth from a date in Java 7 : " + dayOfMonth);
        System.out.println("dayOfYear from a date in Java 1.6 : " + dayOfYear);
        System.out.println("month from a date in Java 1.7 : " + month);
        System.out.println("year from date in JDK 6 : " + year); // In Java 8
        LocalDate currentDate = LocalDate.now();
        DayOfWeek dow = currentDate.getDayOfWeek();
        int dom = currentDate.getDayOfMonth();
        int doy = currentDate.getDayOfYear();
        Month m = currentDate.getMonth();
        int y = currentDate.getYear();
        System.out.println("current local date : " + currentDate);
        System.out.println("dayOfWeek from a date in Java 8 : " + dow);
        System.out.println("dayOfMonth from date in JDK 8: " + dom);
        System.out.println("dayOfYear from a date in Java SE 8 : " + doy);
        System.out.println("month from a date in Java 1.8 : " + m);
        System.out.println("year from date in JDK 1.8 : " + y);
    }
}

Sortie ..

current date : Sun Feb 19 06:38:16 PST 2017
dayOfWeek from date in Java 6 : 1
dayOfMonth from a date in Java 7 : 19
dayOfYear from a date in Java 1.6 : 50
month from a date in Java 1.7 : 1
year from date in JDK 6 : 2017
current local date : 2017-02-19
dayOfWeek from a date in Java 8 : SUNDAY
dayOfMonth from date in JDK 8: 19
dayOfYear from a date in Java SE 8 : 50
month from a date in Java 1.8 : FEBRUARY
year from date in JDK 1.8 : 2017
1
Ajmal sha

Utilisez ce code pour obtenir facilement Date et heure:

package date.time;

import Java.text.SimpleDateFormat;    
import Java.util.Date;

public class DateTime {

    public static void main(String[] args) {
        SimpleDateFormat dnt = new SimpleDateFormat("dd/MM/yy :: HH:mm:ss");
        Date date = new Date();
        System.out.println("Today Date & Time at Now :"+dnt.format(date));  
    } 
}
0
khokan barai

Utilisez ce code

String mydate = Java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());

Ce sera comme suit:

5 février 2013 12:39:02

0
Android Expert

Code pour obtenir la date d'aujourd'hui dans n'importe quel format spécifique

Vous pouvez définir le format souhaité dans l'instance SimpleDateFormat pour obtenir la date dans ce format spécifique

 DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
        Calendar cal = Calendar.getInstance();
        Date date = cal.getTime();
        String todaysdate = dateFormat.format(date);
         System.out.println("Today's date : " + todaysdate);

Suivez les liens ci-dessous pour voir la combinaison de format de date valide.

https://docs.Oracle.com/javase/7/docs/api/Java/text/SimpleDateFormat.html

CODE: Pour avoir x jours d'avance ou précédent par rapport à la date d'aujourd'hui, pour obtenir la date passée ou la date future. 

Par exemple : 

Date d'aujourd'hui: 27/11/2018

xdayFromTodaysDate = 2 pour obtenir la date du 29/11/2018

xdayFromTodaysDate = -2 pour obtenir la date du 25/11/2018

  public String getAniversaryDate(int xdayFromTodaysDate ){

        DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
        Calendar cal = Calendar.getInstance();
        Date date = cal.getTime();
        cal.setTime(date);
        cal.add(Calendar.DAY_OF_MONTH,xdayFromTodaysDate);
        date = cal.getTime();
        String aniversaryDate = dateFormat.format(date);
        LOGGER.info("Today's date : " + todaysdate);
          return aniversaryDate;

    }

CODE: Pour avoir x jours d'avance ou précédent à partir d'une date donnée

  public String getAniversaryDate(String givendate, int xdayFromTodaysDate ){


        Calendar cal = Calendar.getInstance();
        DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
        try {
            Date date = dateFormat.parse(givendate);
            cal.setTime(date);
            cal.add(Calendar.DAY_OF_MONTH,xdayFromTodaysDate);
            date = cal.getTime();
            String aniversaryDate = dateFormat.format(date);
            LOGGER.info("aniversaryDate : " + aniversaryDate);
            return aniversaryDate;
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }

    }
0
Arpan Saini