web-dev-qa-db-fra.com

Comment obtenir la date actuelle heure - date () et calendrier ()

Je veux que les heures et les minutes commencent à partir de la date du 10 octobre 2016

package com.mkyong.date;

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

public class DateDifferentExample
{
    public static void main(String[] args)
    {
        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        //get current date time with Date()
        Date date = new Date();
        System.out.println(dateFormat.format(date));
        //get current date time with Calendar()
        Calendar cal = Calendar.getInstance();
        System.out.println(dateFormat.format(cal.getTime()));
        String dateStart = "01/14/2012 09:29:58";
        String dateStop = "01/15/2012 10:31:48";
        //HH converts hour in 24 hours format (0-23), day calculation
        SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        Date d1 = null;
        Date d2 = null;
        try
        {
            d1 = format.parse(dateStart);
            d2 = format.parse(dateStop);
            //in milliseconds
            long diff = d2.getTime() - d1.getTime();
            long diffSeconds = diff / 1000 % 60;
            long diffMinutes = diff / (60 * 1000) % 60;
            long diffHours = diff / (60 * 60 * 1000) % 24;
            long diffDays = diff / (24 * 60 * 60 * 1000);
            System.out.print(diffDays + " days, ");
            System.out.print(diffHours + " hours, ");
            System.out.print(diffMinutes + " minutes, ");
            System.out.print(diffSeconds + " seconds.");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

Résultats : 

2016/08/15 18:54:03
2016/08/15 18:54:03
1097 Days1 Hours 1 Minute 50 Second 
My want to result for example :
100 days 5 hours 2 minutes 
5
Yavuz

Évitez les anciens cours de date-heure

Vous utilisez d'anciennes classes de date et d'heure problématiques associées aux versions les plus anciennes de Java. Utilisez plutôt les classes Java.time.

L'analyse

Vos chaînes d’entrée sont presque au format ISO 8601. Remplacez l’ESPACE au milieu par un T. Les classes Java.time analysent/génèrent des chaînes aux formats ISO 8601 par défaut. Donc, pas besoin de spécifier un modèle de formatage.

String startInput = "01/14/2012 09:29:58".replace( " " , "T" );
String stopInput = "01/15/2012 10:31:48".replace( " " , "T" );

LocalDateTime

Vos entrées ne contiennent aucune information sur le décalage par rapport à UTC ou le fuseau horaire. Nous analysons donc comme objets LocalDateTime.

LocalDateTime startLdt = LocalDateTime.parse( startInput );
LocalDateTime stopLdt = LocalDateTime.parse( stopInput );

Si vous travaillez davantage avec ces types, vous obtiendrez des résultats basés sur des jours génériques de 24 heures tout en ignorant les anomalies telles que l'heure d'été (DST).

Si vous savez que le contexte de ces données correspond à un fuseau horaire particulier, appliquez-le pour obtenir ZonedDateTime.

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime start = startLdt.atZone( zoneId );
ZonedDateTime stop = stopLdt.atZone( zoneId );

Si vous voulez que le moment actuel soit le début ou la fin, appelez now. Passez le fuseau horaire souhaité/attendu plutôt que de s’appuyer sur le fuseau horaire par défaut de la machine virtuelle Java.

ZonedDateTime now = ZonedDateTime.now( zoneId );

Durée

La classe Duration représente une période de temps sous la forme d'un total de secondes plus une fraction de seconde avec une résolution en nanosecondes.

Duration duration = Duration.between( start , stop );

Bizarrement, en Java 8, cette classe manque de méthodes pour obtenir le nombre de jours, d’heures, etc. constituant cette période. Java 9 ajoute les méthodes to…Part

long days = duration.toDaysPart();
int hours = duration.toHoursPart();
int minutes = duration.toMinutesPart();

Jusqu'à Java 9, vous pouvez faire le calcul vous-même.

À propos de Java.time

La structure Java.time est intégrée à Java 8 et versions ultérieures. Ces classes supplantent les anciennes classes de date-heure, telles que Java.util.Date, .Calendar et Java.text.SimpleDateFormat

Le projet Joda-Time , maintenant en mode maintenance , conseille la migration vers Java.time.

Pour en savoir plus, voir le Oracle Tutorial . Et recherchez Stack Overflow pour de nombreux exemples et explications.

Une grande partie de la fonctionnalité Java.time est rétroportée vers Java 6 et 7 dans ThreeTen-Backport , puis adaptée à Android dans ThreeTenABP .

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.

3
Basil Bourque

public final void set (int year, int month, int date) - cette méthode de la classe Calendar peut être utilisée pour définir la date.

public final void set (int year, int month, int date, int hourOfDay, int minute, int seconde) peut également être utilisé pour régler l'heure.

Calendar.getInstance () par défaut, définit la date et l'heure actuelles.

1
Sumit Gupta