webentwicklung-frage-antwort-db.com.de

Wie bekomme ich das heutige Datum?

Mit anderen Worten, ich möchte eine Funktionalität, die Joda-Time bietet:

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

aber ohne Joda-Time nur mit Java.util.Date.

Methoden wie .setHours () und usw. werden nicht mehr empfohlen. Gibt es einen richtigeren Weg?

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

Da die Methoden veraltet sind, können Sie dies mit Calendar tun:

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

Und wenn Sie am Ende ein Date-Objekt benötigen, rufen Sie einfach today.getTime() auf.

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

DateUtils von Apache Commons-Lang. Achten Sie auf die Zeitzone!

10

Gibt es richtigere Wege?

Ja da ist.

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

Java.time

In Java 8 und höher ist jetzt das neue Java.time-Framework integriert. Siehe Tutorial . Inspiriert von Joda-Time, definiert durch JSR 310, und erweitert durch das ThreeTen-Extra-Projekt.

Beispiele

Es folgen einige Beispiele mit Java.time. Beachten Sie, wie sie eine Zeitzone angeben. Wenn nicht angegeben, wird die aktuelle Standardzeitzone Ihrer JVM angezeigt. Diese Standardeinstellung kann variieren, auch wenn sie sich zu jedem Zeitpunkt während der Laufzeit ändert. Ich schlage daher vor, dass Sie eine Zeitzone explizit angeben, anstatt sich implizit auf die Standardeinstellung zu verlassen.

Hier ist ein Beispiel für ein reines Datum ohne Uhrzeit und Zeitzone.

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

heute: 19.10.2015

Hier ist ein Beispiel für das Abrufen der aktuellen Datums- und Uhrzeitangabe.

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

Wenn ausgeführt:

zdt: 2015-10-19T18: 07: 02.910-04: 00 [America/Montreal]

Erster Moment des Tages

Die Frage fragt nach dem Datum und der Uhrzeit, an der die Uhrzeit auf Null gesetzt ist. Dies setzt voraus, dass der erste Moment des Tages immer die Zeit ist 00:00:00.0, Aber das ist nicht immer der Fall. Sommerzeit (DST) und andere Anomalien bedeuten, dass der Tag möglicherweise zu einer anderen Zeit beginnt, z. B. 01:00.0.

Glücklicherweise hat Java.time die Möglichkeit, den ersten Moment eines Tages für eine bestimmte Zeitzone zu bestimmen: LocalDate::atStartOfDay . Sehen wir uns einen Code an, der den LocalDate mit dem Namen today und den ZoneId mit dem Namen zoneId aus dem obigen Code verwendet.

ZonedDateTime todayStart = today.atStartOfDay( zoneId );

zdt: 2015-10-19T00: 00: 00-04: 00 [America/Montreal]

Interoperabilität

Wenn Sie ein Java.util.Date für Klassen benötigen, die noch nicht für die Verwendung mit den Java.time-Typen aktualisiert wurden, konvertieren Sie. Rufen Sie die Java.util.Date.from( Instant instant ) -Methode auf.

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

Über Java.time

Das Java.time Framework ist in Java 8 und höher eingebaut. Diese Klassen verdrängen das lästige alte legacy Datum-Zeit-Klassen wie Java.util.Date , Calendar , & SimpleDateFormat .

Das Projekt Joda-Time , das sich jetzt im Wartungsmodus befindet, rät zur Migration auf Java.time = Klassen.

Weitere Informationen finden Sie im Oracle Tutorial . Durchsuchen Sie Stack Overflow nach vielen Beispielen und Erklärungen. Spezifikation ist JSR 31 .

Sie können Java.time Objekte direkt mit Ihrer Datenbank austauschen. Verwenden Sie einen JDBC-Treiber , der JDBC 4.2 oder höher entspricht. Keine Notwendigkeit für Zeichenketten, keine Notwendigkeit für Klassen Java.sql.*.

Woher bekommen Sie die Java.time-Klassen?

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

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

gefunden hier

8
Pontios

Wenn Sie für das aktuelle Datum Mitternacht (0:00 Uhr) wünschen, können Sie einfach den Standardkonstruktor verwenden und die Zeitabschnitte auf Null setzen:

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

edit : update mit Calendar, da diese Methoden veraltet sind

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

Ausgabe..

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

Verwenden Sie diesen Code, um Datum und Uhrzeit zu ermitteln:

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

Verwenden Sie diesen Code.

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

Dies wird angezeigt als:

5. Februar 2013, 12:39:02 Uhr

0
Android Expert

Code, um das heutige Datum in einem bestimmten Format zu erhalten

Sie können das gewünschte Format in der SimpleDateFormat-Instanz definieren, um das Datum in diesem bestimmten Format zu erhalten

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

Folgen Sie den Links unten, um die gültige Kombination des Datumsformats anzuzeigen.

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

CODE: x Tage vor oder zurück vom heutigen Datum, das vergangene Datum oder das zukünftige Datum. 

Zum Beispiel : 

Heute datum: 27.11.2014

xdayFromTodaysDate = 2, um das Datum als 29.11.2014 zu erhalten

xdayFromTodaysDate = -2, um das Datum als 25.11.2014 zu erhalten

  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: Um x Tage voraus oder zurück von einem bestimmten Datum zu bekommen

  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