wake-up-neo.net

So erhalten Sie das aktuelle Datum - Datum () und Kalender ()

Ich möchte Stunden und Minuten beginnen ab dem aktuellen Datum wird 10. Oktober 2016 Ende der Tage sein

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();
        }
    }
}

Ergebnisse : 

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

Vermeiden Sie alte Datumszeitklassen

Sie verwenden störende alte alte Datums-/Uhrzeit-Klassen, die mit den frühesten Versionen von Java gebündelt sind. Verwenden Sie stattdessen Java.time-Klassen.

Parsing

Ihre Eingabezeichenfolgen haben fast das Standardformat ISO 8601. Ersetzen Sie den SPACE in der Mitte durch eine T. Die Java.time-Klassen analysieren/generieren Zeichenfolgen standardmäßig im ISO 8601-Format. Sie müssen also kein Formatierungsmuster angeben.

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

LocalDateTime

Ihren Eingaben fehlen Informationen zu UTC-Versatz oder Zeitzone. Also analysieren wir als LocalDateTime Objekte.

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

Wenn Sie weiter mit diesen Typen arbeiten, erhalten Sie Ergebnisse, die auf generischen 24-Stunden-Tagen basieren, und ignorieren Anomalien wie die Sommerzeit (DST).

Wenn Sie wissen, dass der Kontext dieser Daten eine bestimmte Zeitzone ist, wenden Sie die Zone an, um ZonedDateTime zu erhalten.

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

Wenn Sie den aktuellen Moment als Start oder Stopp verwenden möchten, rufen Sie now auf. Übergeben Sie die gewünschte/erwartete Zeitzone, anstatt sich auf die aktuelle Standardzeitzone der JVM zu verlassen.

ZonedDateTime now = ZonedDateTime.now( zoneId );

Dauer

Die Duration -Klasse repräsentiert eine Zeitspanne als Summe von Sekunden plus einem Bruchteil einer Sekunde in einer Auflösung von Nanosekunden.

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

Seltsamerweise fehlen dieser Klasse in Java 8 Methoden, um die Anzahl der Tage, Stunden usw. zu ermitteln, die diese Zeitspanne ausmachen. Java 9 fügt to…Part-Methoden hinzu

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

Bis Java 9 können Sie selbst rechnen.

Über Java.time

Das Java.time -Framework ist in Java 8 und höher integriert. Diese Klassen ersetzen die alten störenden Datum-Zeit-Klassen wie Java.util.Date, .Calendar und & Java.text.SimpleDateFormat

Das Joda-Time -Projekt, jetzt im Wartungsmodus , empfiehlt die Migration zu Java.time.

Weitere Informationen finden Sie im Oracle Tutorial . In Stack Overflow finden Sie viele Beispiele und Erklärungen.

Ein Großteil der Java.time-Funktionalität wird auf Java 6 & 7 in ThreeTen-Backport und weiter auf Android in ThreeTenABP angepasst.

Das ThreeTen-Extra -Projekt erweitert Java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Erweiterungen von Java.time. Hier finden Sie einige nützliche Klassen wie Interval, YearWeek, YearQuarter und mehr.

3
Basil Bourque

public final void set (int year, int month, int date) - Diese Methode der Calendar-Klasse kann verwendet werden, um ein Datum festzulegen.

public final void set (int Jahr, Int Monat, Int Datum, Int hourOfDay, Int Minute, Int Sekunde) kann auch zur Zeiteinstellung verwendet werden.

Calendar.getInstance () setzt standardmäßig das aktuelle Datum und die aktuelle Uhrzeit.`

1
Sumit Gupta