web-dev-qa-db-fra.com

Comment obtenir la date et l'heure actuelles en Java

Quel est le meilleur moyen d’obtenir la date/heure actuelle en Java?

594
user496949

Cela dépend de la forme de date/heure que vous voulez:

  • Si vous voulez que la date/heure soit une valeur numérique unique, alors System.currentTimeMillis() vous en donnera la valeur, exprimée en nombre de millisecondes après l’époque UNIX (sous forme de long Java). Cette valeur correspond à un delta par rapport à l'heure UTC et est indépendante du fuseau horaire local ... en supposant que l'horloge système a été réglée correctement.

  • Si vous souhaitez que la date et l'heure soient présentées sous une forme vous permettant d'accéder numériquement aux composants (année, mois, etc.), vous pouvez utiliser l'un des éléments suivants:

    • new Date() vous donne un objet Date initialisé avec la date/heure en cours. Le problème est que les méthodes de l'API Date sont pour la plupart défectueuses ... et obsolètes.

    • Calendar.getInstance() vous donne un objet Calendar initialisé avec la date/heure en cours, en utilisant les valeurs par défaut Locale et TimeZone. D'autres surcharges vous permettent d'utiliser un Locale et/ou TimeZone spécifique. Le calendrier fonctionne ... mais les API sont toujours encombrantes.

    • new org.joda.time.DateTime() vous donne un objet Joda-time initialisé avec la date/heure en cours, en utilisant le fuseau horaire et la chronologie par défaut. Il y a beaucoup d'autres alternatives Joda ... trop nombreuses pour être décrites ici. (Notez cependant que certaines personnes signalent que l'heure Joda a des problèmes de performances. Par exemple, LocalDateTime de Jodatime est lent lorsqu'il est utilisé pour la première fois .)

    • en Java 8, appeler LocalDateTime.now() et ZonedDateTime.now() vous donnera des représentations1 pour la date/heure actuelle. 

Avant Java 8, la plupart des personnes au courant de ces choses recommandaient Joda-time comme disposant (de loin) des meilleures API Java pour effectuer des tâches impliquant des calculs de point de temps et de durée. Avec Java 8, ce n'est plus vrai. Cependant, si vous utilisez déjà le temps Joda dans votre base de code, il n’existe aucune2 raison de migrer.


1 - Notez que LocalDateTime n'inclut pas de fuseau horaire. Comme le dit le javadoc: "Il ne peut pas représenter un instant sur la ligne de temps sans informations supplémentaires telles qu'un décalage ou un fuseau horaire."

2 - Votre code ne sera pas cassé si vous ne le faites pas, et vous ne recevrez pas d'avertissements de dépréciation. Bien sûr, la base de code de Joda va probablement arrêter d’obtenir des mises à jour, mais il est peu probable qu’elle en ait besoin. Aucune mise à jour signifie stabilité et c’est une chose bonne. Notez également qu'il est fort probable que si cette quelqu'un résolve les problèmes causés par des régressions sur la plate-forme Java.

586
Stephen C

Si vous avez juste besoin de générer un horodatage au format AAAA.MM.DJ-HH.MM.SS (cas très fréquent), voici comment procéder:

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
366
Liebster Kamerad

Si vous voulez que la date actuelle soit sous forme de chaîne, essayez ceci:

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

ou

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));

http://www.mkyong.com/Java/java-how-to-get-current-date-time-date-and-calender/

97
duggu

Dans Java 8 c'est:

LocalDateTime.now()

et si vous avez besoin d'informations sur le fuseau horaire:

ZonedDateTime.now()

et si vous souhaitez imprimer une chaîne au format fantaisie:

System.out.println(ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME))
60
Oleg Mikheev

Il suffit de créer un objet Date ...

Date date = new Date();
43
Amir Afghani
    // 2015/09/27 15:07:53
    System.out.println( new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime()) );

    // 15:07:53
    System.out.println( new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()) );

    // 09/28/2015
    System.out.println(new SimpleDateFormat("MM/dd/yyyy").format(Calendar.getInstance().getTime()));

    // 20150928_161823
    System.out.println( new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()) );

    // Mon Sep 28 16:24:28 CEST 2015
    System.out.println( Calendar.getInstance().getTime() );

    // Mon Sep 28 16:24:51 CEST 2015
    System.out.println( new Date(System.currentTimeMillis()) );

    // Mon Sep 28
    System.out.println( new Date().toString().substring(0, 10) );

    // 2015-09-28
    System.out.println( new Java.sql.Date(System.currentTimeMillis()) );

    // 14:32:26
    Date d = new Date();
    System.out.println( (d.getTime() / 1000 / 60 / 60) % 24 + ":" + (d.getTime() / 1000 / 60) % 60 + ":" + (d.getTime() / 1000) % 60 );

    // 2015-09-28 17:12:35.584
    System.out.println( new Timestamp(System.currentTimeMillis()) );

    // Java 8

    // 2015-09-28T16:16:23.308+02:00[Europe/Belgrade]
    System.out.println( ZonedDateTime.now() );

    // Mon, 28 Sep 2015 16:16:23 +0200
    System.out.println( ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME) );

    // 2015-09-28
    System.out.println( LocalDate.now(ZoneId.of("Europe/Paris")) ); // rest zones id in ZoneId class

    // 16
    System.out.println( LocalTime.now().getHour() );

    // 2015-09-28T16:16:23.315
    System.out.println( LocalDateTime.now() );
39
blueberry0xff

Utilisation:

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
System.out.println(timeStamp );

(Ça marche.)

18
user1719182

Il y a beaucoup de méthodes différentes:

14
Greg Hewgill

Créez un objet de date et imprimez-le simplement.

Date d = new Date(System.currentTimeMillis());
System.out.print(d);
10
Subodh

Similaire aux solutions ci-dessus. Mais je me trouve toujours à la recherche de ce morceau de code:

Date date=Calendar.getInstance().getTime();
System.out.println(date);
9
JeffJak

Avez-vous regardé Java.util.Date? C'est exactement ce que tu veux.

9
Starkey
Java.util.Date date = new Java.util.Date();

Il est automatiquement renseigné avec l'heure à laquelle il est instancié.

8
Rudy

Pour Java.util.Date, créez simplement une nouvelle Date ()

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date)); //2016/11/16 12:08:43

Pour Java.util.Calendar, utilise Calendar.getInstance ()

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal)); //2016/11/16 12:08:43

Pour Java.time.LocalDateTime, utilise LocalDateTime.now ()

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
System.out.println(dtf.format(now)); //2016/11/16 12:08:43

Pour Java.time.LocalDate, utilise LocalDate.now ()

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate localDate = LocalDate.now();
System.out.println(dtf.format(localDate)); //2016/11/16

Référence: https://www.mkyong.com/Java/java-how-to-get-current-date-time-date-and-calender/

7
amit pandya

1st Comprendre la classe Java.util.Date

1.1 Comment obtenir la date actuelle

import Java.util.Date;

class Demostration{
    public static void main(String[]args){
        Date date = new Date(); // date object
        System.out.println(date); // Try to print the date object
    }
}

1.2 Comment utiliser la méthode getTime ()

import Java.util.Date;
public class Main {
    public static void main(String[]args){
        Date date = new Date();
        long timeInMilliSeconds = date.getTime();
        System.out.println(timeInMilliSeconds);
    }
}

Cela renverra le nombre de millisecondes depuis le 1er janvier 1970 à 00:00:00 GMT aux fins de comparaison des temps.

1.3 Comment formater l'heure à l'aide de la classe SimpleDateFormat

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

class Demostration{
    public static void main(String[]args){
        Date date=new Date();
        DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate=dateFormat.format(date);
        System.out.println(formattedDate);
    }
}

Essayez également d’utiliser différents modèles de format, tels que "aaaa-MM-jj hh: mm: ss", puis sélectionnez le modèle souhaité. http://docs.Oracle.com/javase/7/docs/api/Java/text/SimpleDateFormat.html

2nd Comprendre la classe Java.util.Calendar

2.1 Utiliser la classe de calendrier pour obtenir l'horodatage actuel

import Java.util.Calendar;

class Demostration{
    public static void main(String[]args){
        Calendar calendar=Calendar.getInstance();
        System.out.println(calendar.getTime());
    }
}

2.2 Essayez d’utiliser setTime et d’autres méthodes set pour définir un calendrier à une date différente.

Source: http://javau91.blogspot.com/

6
u91

Je trouve que c'est le meilleur moyen:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime())); // 2014/08/06 16:00:22
6
kelevra88

Utilisation:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd::HH:mm:ss");
System.out.println(sdf.format(System.currentTimeMillis()));

L'instruction print imprimera l'heure à laquelle elle est appelée et non pas quand la SimpleDateFormat a été créée. Donc, il peut être appelé à plusieurs reprises sans créer de nouveaux objets.

4
joe pelletier

Comme mentionné précédemment, Date () peut faire ce dont vous avez besoin pour obtenir l'heure actuelle. Dans ma récente expérience de travail avec les dates Java, il y a beaucoup de bizarreries avec les classes intégrées (ainsi que la dépréciation de nombreuses méthodes de la classe Date). Une bizarrerie qui m’a frappée est que les mois sont basés sur un indice 0, ce qui d’un point de vue technique a du sens, mais en termes réels, cela peut être très déroutant.

Si vous êtes uniquement préoccupé par la date actuelle, cela devrait suffire. Toutefois, si vous avez l’intention de manipuler/calculer beaucoup de dates, il pourrait être très avantageux d’utiliser une bibliothèque tierce (il en existe beaucoup qui existent car beaucoup de développeurs Java n’ont la fonctionnalité intégrée).

J'approuve la recommandation de Stephen C. Joda-time ayant été très utile pour simplifier mon travail avec les dates, il est également très bien documenté et vous pouvez trouver de nombreux exemples utiles sur le Web. J'ai même fini par écrire une classe de wrapper statique (telle que DateUtils) que j'utilise pour consolider et simplifier toutes mes manipulations de date communes. 

3
David Fioretti

La nouvelle API Data-Time est introduite à l’aube de Java 8. Cette date est due.. aux problèmes suivants causés par l’ancienne API data-time.

Difficile à gérer le fuseau horaire: besoin d'écrire beaucoup de code pour traiter fuseaux horaires.

Not Thread Safe: Java.util.Date n'est pas thread-safe.

Alors jetez un coup d'œil avec Java 8

import Java.time.LocalDate;
import Java.time.LocalTime;
import Java.time.LocalDateTime;
import Java.time.Month;


public class DataTimeChecker {

    public static void main(String args[]) {
        DataTimeChecker dateTimeChecker = new DataTimeChecker();
        dateTimeChecker.DateTime();
    }

    public void DateTime() {
        // Get the current date and time
        LocalDateTime currentTime = LocalDateTime.now();
        System.out.println("Current DateTime: " + currentTime);

        LocalDate date1 = currentTime.toLocalDate();
        System.out.println("Date : " + date1);

        Month month = currentTime.getMonth();
        int day = currentTime.getDayOfMonth();
        int seconds = currentTime.getSecond();

        System.out.println("Month : " + month);
        System.out.println("Day : " + day);
        System.out.println("Seconds : " + seconds);

        LocalDateTime date2 = currentTime.withDayOfMonth(17).withYear(2018);
        System.out.println("Date : " + date2);

        //Prints 17 May 2018
        LocalDate date3 = LocalDate.of(2018, Month.MAY, 17);
        System.out.println("Date : " + date3);

        //Prints 04 hour 45 minutes
        LocalTime date4 = LocalTime.of(4, 45);
        System.out.println("Date : " + date4);

        // Convert to a String 
        LocalTime date5 = LocalTime.parse("20:15:30");
        System.out.println("Date : " + date5);
    }
}

Sortie du codage ci-dessus:

Current DateTime: 2018-05-17T04:40:34.603
Date : 2018-05-17
Month : MAY
Day : 17
Seconds : 34
Date : 2018-05-17T04:40:34.603
Date : 2018-05-17
Date : 04:45
Date : 20:15:30
3
Dulith De Costa

Regardez la Date class. Il existe également le plus récent Calendar class qui est la méthode préférée pour effectuer de nombreuses opérations de date/heure (de nombreuses méthodes sur Date sont obsolètes.)

Si vous souhaitez uniquement connaître la date du jour, créez un nouvel objet Date ou appelez Calendar.getInstance();.

3
Michael Berry
import Java.util.*;
import Java.text.*;

public class DateDemo {
   public static void main(String args[]) {
      Date dNow = new Date( );
      SimpleDateFormat ft = 
      new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
      System.out.println("Current Date: " + ft.format(dNow));
   }
}

vous pouvez utiliser la date pour les données actuelles fet. donc en utilisant SimpleDateFormat get format

1
Madhuka Dilhan
 System.out.println( new SimpleDateFormat("yyyy:MM:dd - hh:mm:ss a").format(Calendar.getInstance().getTime()) );
    //2018:02:10 - 05:04:20 PM

date/heure avec AM/PM

1
Shinwar ismail

J'ai créé cette méthode, ça marche pour moi ...

public String GetDay() {
    return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd")));
}

public String GetNameOfTheDay() {
    return String.valueOf(LocalDateTime.now().getDayOfWeek());
}

public String GetMonth() {
    return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("MM")));
}

public String GetNameOfTheMonth() {
    return String.valueOf(LocalDateTime.now().getMonth());
}

public String GetYear() {
    return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy")));
}

public boolean isLeapYear(long year) {
    return Year.isLeap(year);
}

public String GetDate() {
    return GetDay() + "/" + GetMonth() + "/" + GetYear();
}

public String Get12HHour() {
    return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("hh")));
}

public String Get24HHour() {
    return String.valueOf(LocalDateTime.now().getHour());
}

public String GetMinutes() {
    return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("mm")));
}

public String GetSeconds() {
    return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("ss")));
}

public String Get24HTime() {
    return Get24HHour() + ":" + GetMinutes();
}

public String Get24HFullTime() {
    return Get24HHour() + ":" + GetMinutes() + ":" + GetSeconds();
}

public String Get12HTime() {
    return Get12HHour() + ":" + GetMinutes();
}

public String Get12HFullTime() {
    return Get12HHour() + ":" + GetMinutes() + ":" + GetSeconds();
}
0
PotterOleagaCR

Vous pouvez utiliser l'objet Date et le formater vous-même. Il est difficile de formater et nécessite plus de codes, par exemple,

Date dateInstance = new Date();
int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900.
int date = dateInstance.getDate();
int month = dateInstance.getMonth();
int day = dateInstance.getDay();
int hours = dateInstance.getHours();
int min = dateInstance.getMinutes();
int sec = dateInstance.getSeconds();

String dayOfWeek = "";
switch(day){
    case 0:
        dayOfWeek = "Sunday";
        break;
    case 1:
        dayOfWeek = "Monday";
        break;
    case 2:
        dayOfWeek = "Tuesday";
        break;
    case 3:
        dayOfWeek = "Wednesday";
        break;
    case 4:
        dayOfWeek = "Thursday";
        break;
    case 5:
        dayOfWeek = "Friday";
        break;
    case 6:
        dayOfWeek = "Saturday";
        break;
}
System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek);
System.out.println("Time: " + hours +":"+ min + ":" + sec);

sortie: 

Date: 2017-6-23 Sunday
Time: 14:6:20

Comme vous pouvez le constater, c’est la pire façon de le faire. Selon la documentation Oracle, il s’agit de obsolète .

Doc Oracle:

La classe Date représente un instant spécifique dans le temps, avec une milliseconde précision.

Avant JDK 1.1, la classe Date avait deux fonctions supplémentaires. Il a permis l'interprétation des dates comme année, mois, jour, heure, minute, et les deuxièmes valeurs. Il a également permis le formatage et l'analyse de date des cordes. Malheureusement, l'API pour ces fonctions n'était pas disponible à l'internationalisation. À partir de JDK 1.1, la classe Calendar devrait être utilisé pour convertir entre les champs de date et d'heure et la classe DateFormat devrait être utilisé pour formater et analyser les chaînes de date. Le correspondant les méthodes de Date sont obsolètes.

Donc, alternativement, vous pouvez utiliser Calendar class,

Calendar.YEAR;
//and lot more

Pour obtenir l'heure actuelle, vous pouvez utiliser:

Calendar rightNow = Calendar.getInstance();

Doc:

Comme d'autres classes sensibles aux paramètres régionaux, Calendar fournit une méthode de classe, getInstance, pour obtenir un objet généralement utile de ce type . La méthode getInstance du calendrier renvoie un objet Calendar dont le calendrier les champs ont été initialisés avec la date et l'heure actuelles

Code ci-dessous pour obtenir uniquement la date

Date rightNow = Calendar.getInstance().getTime();
System.out.println(rightNow);

De plus, la classe Calendar possède des sous-classes. (GregorianCalendar } est l'un d'entre eux et la sous-classe concrète de Calendar et fournit le système de calendrier standard utilisé par la plupart des pays du monde.

Exemple utilisant GregorianCalendar:

Calendar cal = new GregorianCalendar();
int hours = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
int ap = cal.get(Calendar.AM_PM);

String amVSpm;
if(ap == 0){
    amVSpm = "AM";
}else{
    amVSpm = "PM";
}

String timer = hours + "-" + minute + "-" + second + " " +amVSpm;
System.out.println(timer);

Vous pouvez utiliser SimpleDateFormat , moyen simple et rapide de formater la date:

String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

String date = simpleDateFormat.format(new Date());
System.out.println(date);

Lisez ceci tutoriel Jakob Jenkov: Java SimpleDateFormat .

Comme d'autres l'ont mentionné, lorsque nous avons besoin de manipuler des dates, nous n'avions pas le moyen le plus simple ni le meilleur moyen ou nous ne pouvions pas nous contenter des API, des classes intégrées.

Par exemple, lorsque nous devons obtenir différentes entre deux dates , lorsque nous devons _ { comparer deux dates (il existe une méthode intégrée également pour cela)) } et bien d'autres. Nous avons dû utiliser des bibliothèques tierces. Un des bons et des plus populaires est Joda Time.

Lisez aussi:

La chose la plus heureuse est maintenant (en Java 8), nul besoin de télécharger et d’utiliser des bibliothèques pour quelque raison que ce soit. Un exemple simple pour obtenir la date et l'heure actuelles dans Java 8,

LocalTime localTime = LocalTime.now();
System.out.println(localTime);

//with time zone
LocalTime localTimeWtZone = LocalTime.now(ZoneId.of("GMT+02:30"));
System.out.println(localTimeWtZone);

Un des bon article de blog à lire sur la date de Java 8 .

Et rappelez-vous pour en savoir plus sur la date et l'heure de Java car il existe beaucoup plus de moyens et/ou de moyens utiles que vous pouvez obtenir/utiliser.

MODIFIER:

Selon le commentaire de @BasilBourque, les anciennes classes de date-heure gênantes telles que Java.util.Date, Java.util.Calendar et Java.text.SimpleTextFormat sont maintenant héritées , supplantées par les Java.time .

0
Blasanka

Je vais y aller et jeter cette réponse parce que c'est tout ce dont j'avais besoin quand j'avais la même question

Date currentDate = new Date(System.currentTimeMillis());

currentDate est maintenant votre date actuelle dans un objet Java Date.

0
ThePartyTurtle

essayez juste ce code:

import Java.text.DateFormat;
import Java.text.SimpleDateFormat;
import Java.util.Calendar;
import Java.util.Date;
public class CurrentTimeDateCalendar {
    public static void getCurrentTimeUsingDate() {
        Date date = new Date();
        String strDateFormat = "hh:mm:ss a";
        DateFormat dateFormat = new SimpleDateFormat(strDateFormat);
        String formattedDate= dateFormat.format(date);
        System.out.println("Current time of the day using Date - 12 hour format: " + formattedDate);
    }
    public static void getCurrentTimeUsingCalendar() {
        Calendar cal = Calendar.getInstance();
        Date date=cal.getTime();
        DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
        String formattedDate=dateFormat.format(date);
        System.out.println("Current time of the day using Calendar - 24 hour format: "+ formattedDate);
    }
}

dont l'exemple de sortie est:

Heure actuelle du jour avec le format Date - 12 heures: 23:13:01

Heure actuelle de la journée à l'aide du calendrier - Format 24 heures: 23:13:01

plus d'informations sur:

Obtenir l'heure de la date actuelle en Java

0
Majid Roustaei