Wie kann ich das aktuelle Datum in Android erhalten?

165

Ich habe den folgenden Code geschrieben

Date d = new Date();
CharSequence s  = DateFormat.format("MMMM d, yyyy ", d.getTime());

Aber fragt mich Parameter, ich möchte aktuelles Datum im String-Format,

mögen

28-Dec-2011

damit ich mich setzen kann TextView,

Erklären Sie ein wenig, wenn Sie denken, dass etwas notwendig ist, bin ich neu in der Android-Entwicklung.

Chatar Veer Suthar
quelle
1
Während die Verwendung der DateFormatKlasse in Ordnung war, als diese Frage im Jahr 2011 gestellt wurde, waren diese Klasse und ihre Unterklasse SimpleDateFormatimmer problematisch und sind nun längst veraltet. Ich empfehle, dass Sie sie nicht verwenden und stattdessen in java.time, der modernen Java-API für Datum und Uhrzeit, nachsehen .
Ole VV

Antworten:

389

Sie können die SimpleDateFormatKlasse zum Formatieren des Datums in Ihrem gewünschten Format verwenden.

Überprüfen Sie einfach diesen Link, wo Sie eine Idee für Ihr Beispiel bekommen.

Beispielsweise:

String dateStr = "04/05/2010"; 
 
SimpleDateFormat curFormater = new SimpleDateFormat("dd/MM/yyyy"); 
Date dateObj = curFormater.parse(dateStr); 
SimpleDateFormat postFormater = new SimpleDateFormat("MMMM dd, yyyy"); 
 
String newDateStr = postFormater.format(dateObj); 

Aktualisieren:

Das detaillierte Beispiel finden Sie hier . Ich würde vorschlagen, dass Sie dieses Beispiel durchgehen und das Konzept der SimpleDateFormat-Klasse verstehen.

Endgültige Lösung:

Date c = Calendar.getInstance().getTime();
System.out.println("Current time => " + c);

SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.getDefault());
String formattedDate = df.format(c);
Paresh Mayani
quelle
Möglicherweise möchten Sie die System.currentTimeMillis () -Methode oder die Data-Klasse anstelle der Calendar-Klasse verwenden. Sollte schneller sein. stackoverflow.com/questions/368094/…
cjayem13
Dies erfordert API 24!
ueen
Zu Ihrer Information, die furchtbar mühsam Datum Zeitklassen wie java.util.Date, java.util.Calendarund java.text.SimpleDateFormatsind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 und höher. Siehe Tutorial von Oracle .
Basil Bourque
@ueen Bitte aus Java-Paket importieren, nicht von Android.
Sadda Hussain
Arbeiten Geldstrafen? Zur Zeit? (2020)
Luke Cross
152

Mit dem einfachen einzeiligen Code zum Abrufen des aktuellen Datums in diesem JJJJ-MM-TT- Format können Sie das gewünschte Format verwenden:

String date = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());
Pratik Butani
quelle
7
Sie sollten es ändern in: String currentDate = new SimpleDateFormat ("TT-MM-JJJJ", Locale.getDefault ()). Format (neues Datum ());
Bart Burg
1
Wow Danke! Dies hat funktioniert, obwohl ich glaube, dass ich herausgefunden habe, warum das Datum auf meinem virtuellen Gerät einen Tag zuvor angezeigt wurde, wahrscheinlich weil das Datum auf der virtuellen Maschine nicht richtig war. Beim Testen auf einem tatsächlichen Telefon wirkte es Wunder. Also danke @Pratik
Wesley Franks
30

Dies hat nichts mit Android zu tun, da es auf Java basiert und Sie es verwenden können

private String getDateTime() { 
   DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
   Date date = new Date(); 
   return dateFormat.format(date); 
}
Graham Smith
quelle
Es gibt Fehler, new Date () fragt nach Argumenten und Sie initialisieren das DateFormat mit SimpleDateFormat, ebenfalls ungültig
Chatar Veer Suthar
12
 public String giveDate() {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("EEE, MMM d, yyyy");
    return sdf.format(cal.getTime());
 }
Kamal
quelle
11

Versuche dies,

SimpleDateFormat timeStampFormat = new SimpleDateFormat("yyyyMMddHHmmssSS");
Date myDate = new Date();
String filename = timeStampFormat.format(myDate);
Luzifer
quelle
Es heißt, Argumente zu neuem Datum hinzufügen (lang)
Chatar Veer Suthar
In new Date () kann kein langer Parameter abgefragt werden.
Luzifer
Warum Sie private Schlüssel verwenden, Ihren Code in Android-Projekt ausführen, erhalten Sie die Ausgabe?
Chatar Veer Suthar
Bitte entfernen Sie das "privat". Ja, ich bekomme die Ausgabe, ich sehe Ihre Diskussion. Ich weiß nicht, warum Sie Probleme für eine sehr einfache Beendigung bekommen.
Luzifer
7
CharSequence s  = DateFormat.getDateInstance().format("MMMM d, yyyy ");

Sie benötigen zuerst eine Instanz

Marthyn Olthof
quelle
getDateInstance, dies nicht erkennend
Chatar Veer Suthar
Wenn Sie sich die Java-Dokumente ansehen, sollte es sein, docs.oracle.com/javase/6/docs/api/java/text/… , java.util.Locale)
Marthyn Olthof
@Veer, wenn Sie versehentlich android.text.format.DateFormat anstelle von java.text.DateFormat importiert haben, wird getDateInstance () nicht erkannt
gcbound
7

Funktioniert wie ein Zauber und konvertiert als Bonus in String;)

SimpleDateFormat currentDate = new SimpleDateFormat("dd/MM/yyyy");
      Date todayDate = new Date();
    String thisDate = currentDate.format(todayDate);
SoVinceble
quelle
5
 String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());

// Datumsklasse als java.util importieren

Arshad Shaikh
quelle
4

Der folgende Code zeigt sowohl die Uhrzeit als auch das Datum an

Calendar cal = Calendar.getInstance();
cal.getTime().toString();
Rajeswari Kotikalapudi
quelle
4
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String date = df.format(Calendar.getInstance().getTime());
Zeeshan Ali
quelle
4

Ich gebe die moderne Antwort.

java.time und ThreeTenABP

So erhalten Sie das aktuelle Datum:

    LocalDate today = LocalDate.now(ZoneId.of("America/Hermosillo"));

Dadurch erhalten Sie ein LocalDateObjekt, mit dem Sie ein Datum in Ihrem Programm behalten sollten. A LocalDateist ein Datum ohne Tageszeit.

Nur wenn Sie das Datum einem Benutzer anzeigen müssen, formatieren Sie es in eine Zeichenfolge, die für das Gebietsschema des Benutzers geeignet ist:

    DateTimeFormatter userFormatter
            = DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
    System.out.println(today.format(userFormatter));

Als ich dieses Snippet heute im US-englischen Gebietsschema ausführte, war die Ausgabe:

13. Juli 2019

Wenn Sie es kürzer möchten, geben Sie an FormatStyle.MEDIUModer sogar FormatStyle.SHORT. DateTimeFormatter.ofLocalizedDateVerwendet das Standardformatierungsgebietsschema, sodass der Punkt darin besteht, dass eine für dieses Gebietsschema geeignete Ausgabe ausgegeben wird, die für verschiedene Gebietsschemas unterschiedlich ist.

Wenn Ihr Benutzer ganz besondere Anforderungen an das Ausgabeformat hat, verwenden Sie eine Formatmusterzeichenfolge:

    DateTimeFormatter userFormatter = DateTimeFormatter.ofPattern(
            "d-MMM-u", Locale.forLanguageTag("ar-AE"));

13-يول -2019

Ich verwende und empfehle java.time, die moderne Java-API für Datum und Uhrzeit. DateFormat, SimpleDateFormat, DateUnd Calendarin der Frage und / oder viele der anderen Antworten sind schlecht konzipiert und lange veraltet verwendet. Und mit java.time kann man viel besser arbeiten.

Frage: Kann ich java.time unter Android verwenden?

Ja, java.time funktioniert gut auf älteren und neueren Android-Geräten. Es erfordert nur mindestens Java 6 .

  • In Java 8 und höher und auf neueren Android-Geräten (ab API-Level 26) ist die moderne API integriert.
  • In Java 6 und 7 erhalten Sie den ThreeTen Backport, den Backport der modernen Klassen (ThreeTen für JSR 310; siehe die Links unten).
  • Verwenden Sie auf (älteren) Android die Android-Edition von ThreeTen Backport. Es heißt ThreeTenABP. Und stellen Sie sicher, dass Sie die Datums- und org.threeten.bpZeitklassen mit Unterpaketen importieren.

Links

Ole VV
quelle
Sehr gute Antwort! Aber wie kann ich ThreeTen LocalDateTime in Date konvertieren? Ich verwende Firebase und eine Voraussetzung zum Speichern des Zeitstempels ist das Datumsobjekt.
H. Karatsanov
@ H.Karatsanov Bei Verwendung des Backports : DateTimeUtils.toDate(yourLocalDateTime.atZone(ZoneId.systemDefault()).toInstant()). Bei Verwendung der integrierten java.time : Date.from(yourLocalDateTime.atZone(ZoneId.systemDefault()).toInstant()). Siehe Konvertieren zwischen java.time.LocalDateTime und java.util.Date . Die maßgebliche Antwort von JodaStephen ist da und auch eine Antwort, die die Verwendung des Backports zeigt .
Ole VV
4
 public static String getcurrentDateAndTime(){

        Date c = Calendar.getInstance().getTime();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
        String formattedDate = simpleDateFormat.format(c);
        return formattedDate;
    }

// String currentdate=  getcurrentDateAndTime();
indrajeet jyoti
quelle
Trägt es etwas Wesentliches zur Frage bei ( ich möchte das aktuelle Datum im Zeichenfolgenformat, wie28-Dec-2011 ), das nicht bereits in den anderen Antworten enthalten ist? Auf jeden Fall wird immer noch die notorisch mühsame und längst veraltete SimpleDateFormatKlasse verwendet. Bitte, wir brauchen dafür keine weiteren Antworten.
Ole VV
Es funktioniert für bewährte Methoden. Fügen Sie den zweiten Parameter hinzu. Gebietsschema SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("JJJJ / MM / TT", Gebietsschema.ENGLISH);
Rucha Bhatt Joshi
3
Calendar cal = Calendar.getInstance();      
Calendar dt = Calendar.getInstance(); 
dt.clear();
dt.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),cal.get(Calendar.DATE)); 
return dt.getTime();        
Vinayak
quelle
3

Eine einfache Änderung an Pareshs Lösung:

Date date = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String formattedDate = df.format(date);
cNgamba
quelle
3
Calendar c = Calendar.getInstance();
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
String date = day + "/" + (month + 1) + "/" + year;

Log.i("TAG", "--->" + date);
Rhaldar
quelle
2

Sie können den folgenden Code verwenden, um ein Datum in dem gewünschten Format abzurufen.

String date = String.valueOf(android.text.format.DateFormat.format("dd-MM-yyyy", new java.util.Date()));
Android Dev
quelle
Schöner Liner und arbeitet an unteren Sdks. Ein paar Zeichen kürzer DateFormat.format ("TT-MM-JJJJ", neues java.util.Date ()). ToString ()
Jeffrey
1
Date c = Calendar.getInstance().getTime();
System.out.println("Current time => " + c);

SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String formattedDate = df.format(c);

Dieser ist die beste Antwort ...

Fatima
quelle
0

Der einfachste Weg, um das aktuelle Datum im aktuellen Gebietsschema (Gerätegebietsschema!) Abzurufen:

String currentDate = DateFormat.getDateInstance().format(Calendar.getInstance().getTime());

Wenn Sie das Datum in verschiedenen Stilen haben möchten, verwenden Sie getDateInstance(int style):

DateFormat.getDateInstance(DateFormat.FULL).format(Calendar.getInstance().getTime());

Andere Stile: DateFormat.LONG, DateFormat.DATE_FIELD, DateFormat.DAY_OF_YEAR_FIELDusw. (Verwendung , CTRL+Spacesie alle zu sehen)

Wenn Sie auch die Zeit brauchen:

String currentDateTime = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.LONG).format(Calendar.getInstance().getTime());
Ivo Stoyanov
quelle
0
  public static String getDateTime() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMMM dd, yyyy HH:mm:ss", Locale.getDefault());
        Date date = new Date();
        return simpleDateFormat.format(date);
    }
Divyesh Patel
quelle
0

Versuchen Sie es mit diesem Code-Link. Dies ist die absolut richtige Antwort für alle Fälle in Bezug auf Datum und Uhrzeit. oder passen Sie Datum und Uhrzeit nach Bedarf und Anforderung der App an.

versuchen Sie es mit diesem Link. versuchen Sie es mit diesem Link

Amitsharma
quelle
0

Ich habe eine Kalender-App mit CalendarView geschrieben und es ist mein Code:

CalendarView cal = (CalendarView) findViewById(R.id.calendar);
cal.setDate(new Date().getTime());

Das Feld "Kalender" ist meine Kalenderansicht. Importe:

import android.widget.CalendarView;
import java.util.Date;

Ich habe das aktuelle Datum ohne Fehler.

Muskovets
quelle
0

Dies ist der Code, den ich verwendet habe:

             Date date = new Date();  // to get the date
             SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy"); // getting date in this format
             String formattedDate = df.format(date.getTime());
             text.setText(formattedDate);
Savita Sharma
quelle
0

Ich habe das schon benutzt:

Date What_Is_Today=Calendar.getInstance().getTime();
SimpleDateFormat Dateformat = new SimpleDateFormat("dd-MM-yyyy");
String Today=Dateformatf.format(What_Is_Today);

Toast.makeText(this,Today,Toast.LENGTH_LONG).show();

Zuerst bekomme ich Zeit, dann habe ich ein einfaches Datumsformat deklariert (um das Datum zu erhalten wie: 19-6-2018), dann verwende ich das Format, um das Datum in eine Zeichenfolge zu ändern.

Farshid Ahmadi
quelle
0

Nur ein Zeilencode, um ein einfaches Datumsformat zu erhalten:

SimpleDateFormat.getDateInstance().format(Date())

Ausgabe: 18. Mai 2020

SimpleDateFormat.getDateTimeInstance().format(Date())

Ausgabe: 18. Mai 2020, 11:00:39 Uhr

SimpleDateFormat.getTimeInstance().format(Date())

Ausgabe: 11:00:39 Uhr

Hoffe, diese Antwort reicht aus, um dieses Datums- und Zeitformat zu erhalten ... :)

vijay saini
quelle
Bitte nicht lehren die jungen , die lange überholt und notorisch mühsam zu bedienen SimpleDateFormatund DateFormatKlassen. Zumindest nicht als erste Option. Und das nicht ohne Vorbehalt. Heute haben wir so viel besser in java.timeder modernen Java-API für Datum und Uhrzeit und deren DateTimeFormatter. Ja, Sie können es auf Android verwenden. Für ältere Android siehe Verwendung von ThreeTenABP in Android Project .
Ole VV
-1

Dies ist der Code, den ich verwendet habe :

final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);

// Set current date into textview
tvDisplayDate.setText(new StringBuilder()
    .append(month + 1).append("-") // Month is 0 based, add 1
    .append(day).append("-")
    .append(year).append("   Today is :" + thursday ) );

// Set current date into datepicker
dpResult.init(year, month, day, null);
Dondondon
quelle