Bagaimana saya bisa mendapatkan tanggal saat ini di Android?

165

Saya menulis kode berikut

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

Tetapi meminta saya parameter, saya ingin tanggal saat ini dalam format string,

Suka

28-Dec-2011

sehingga saya bisa mengatur TextView,

jelaskan sedikit, jika Anda pikir sesuatu itu perlu, saya baru mengenal Android Development.

Chatar Veer Suthar
sumber
1
Saat menggunakan DateFormatkelas tidak masalah ketika pertanyaan ini diajukan pada tahun 2011, kelas itu dan subkelasnya SimpleDateFormatselalu menyusahkan dan sekarang sudah lama usang. Saya sarankan Anda tidak menggunakannya dan sebaliknya melihat ke java.time, API tanggal dan waktu Java modern .
Ole VV

Jawaban:

389

Anda dapat menggunakan SimpleDateFormatkelas untuk memformat tanggal dalam format yang Anda inginkan.

Cukup periksa tautan ini di mana Anda mendapatkan ide untuk contoh Anda.

Sebagai contoh:

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

Memperbarui:

Contoh terperinci ada di sini , saya sarankan Anda membaca contoh ini dan memahami konsep kelas SimpleDateFormat.

Solusi akhir:

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
sumber
Anda mungkin ingin menggunakan metode System.currentTimeMillis () atau kelas Data sebagai gantinya kelas Kalender. Seharusnya lebih cepat. stackoverflow.com/questions/368094/…
cjayem13
Ini membutuhkan API 24!
ueen
FYI, kelas tanggal yang sangat merepotkan seperti java.util.Date , java.util.Calendar, dan java.text.SimpleDateFormatsekarang warisan , digantikan oleh java.time kelas dibangun ke Jawa 8 dan kemudian. Lihat Tutorial oleh Oracle .
Basil Bourque
@ueen Silakan impor dari paket java bukan dari android.
Sadda Hussain
Denda bekerja? Saat ini? (2020)
luke cross
152

Kode satu baris sederhana untuk mendapatkan Tanggal saat ini dalam format yyyy-MM-dd ini Anda dapat menggunakan format yang Anda inginkan:

String date = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());
Pratik Butani
sumber
7
Anda harus mengubahnya ke: String currentDate = new SimpleDateFormat ("dd-MM-yyyy", format Locale.getDefault ()). (Tanggal baru ());
Bart Burg
1
Wow Terimakasih! Ini berhasil, walaupun saya yakin saya mungkin tahu mengapa tanggal pada perangkat virtual saya tunjukkan satu hari sebelumnya, mungkin karena tanggal pada mesin virtual itu tidak benar. Ketika diuji pada ponsel yang sebenarnya, itu bekerja dengan sangat baik. Jadi terima kasih @Pratik
wesley
30

Ini tidak ada hubungannya dengan android karena berbasis java sehingga Anda bisa menggunakannya

private String getDateTime() { 
   DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
   Date date = new Date(); 
   return dateFormat.format(date); 
}
Graham Smith
sumber
Ada kesalahan, Date () baru meminta argumen, dan Anda menginisialisasi DateFormat dengan SimpleDateFormat, juga tidak valid
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
sumber
11

coba ini,

SimpleDateFormat timeStampFormat = new SimpleDateFormat("yyyyMMddHHmmssSS");
Date myDate = new Date();
String filename = timeStampFormat.format(myDate);
Korek
sumber
katanya menambahkan argumen ke Date baru (lama)
Chatar Veer Suthar
di Date () baru, ia tidak bisa menanyakan parameter panjang.
Lucifer
Mengapa Anda menggunakan private keywork, jalankan kode Anda di proyek android, apakah Anda mendapatkan output?
Chatar Veer Suthar
tolong hapus "pribadi" itu. ya saya mendapatkan hasilnya, saya melihat diskusi Anda. Saya tidak tahu mengapa Anda mendapatkan masalah untuk pertanyaan yang sangat sederhana.
Lucifer
7
CharSequence s  = DateFormat.getDateInstance().format("MMMM d, yyyy ");

Anda perlu contoh terlebih dahulu

Marthyn Olthof
sumber
getDateInstance, tidak mengenali ini
Chatar Veer Suthar
jika Anda melihat dokumen java seharusnya, docs.oracle.com/javase/6/docs/api/java/text/… , java.util.Locale)
Marthyn Olthof
@ Vir, jika Anda secara tidak sengaja mengimpor android.text.format.DateFormat alih-alih java.text.DateFormat, getDateInstance () tidak akan dikenali
gcbound
7

Bekerja seperti jimat dan mengubahnya menjadi String sebagai bonus;)

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

// impor kelas Date sebagai java.util

arshad shaikh
sumber
4

Kode di bawah ini menampilkan waktu dan tanggal

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

Saya memberikan jawaban modern.

java.time dan ThreeTenABP

Untuk mendapatkan tanggal saat ini:

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

Ini memberi Anda LocalDateobjek, yang harus Anda gunakan untuk menjaga tanggal dalam program Anda. SEBUAHLocalDate adalah tanggal tanpa waktu.

Hanya ketika Anda perlu menampilkan tanggal ke pengguna, format menjadi string yang cocok untuk lokal pengguna:

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

Ketika saya menjalankan cuplikan ini hari ini di lokal Bahasa Inggris AS, hasilnya adalah:

13 Juli 2019

Jika Anda menginginkannya lebih pendek, tentukan FormatStyle.MEDIUMatau bahkan FormatStyle.SHORT. DateTimeFormatter.ofLocalizedDatemenggunakan lokal pemformatan default, jadi intinya adalah bahwa ia akan memberikan output yang cocok untuk lokal itu, berbeda untuk lokal yang berbeda.

Jika pengguna Anda memiliki persyaratan yang sangat khusus untuk format output, gunakan string pola format:

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

13-يول -2019

Saya menggunakan dan merekomendasikan java.time, API tanggal dan waktu Java modern. DateFormat, SimpleDateFormat, DateDan Calendardigunakan dalam pertanyaan dan / atau banyak jawaban yang lain, dirancang dengan buruk dan lama usang. Dan java.time jauh lebih baik untuk digunakan.

Pertanyaan: Bisakah saya menggunakan java.time di Android?

Ya, java.time bekerja dengan baik pada perangkat Android yang lebih lama dan lebih baru. Itu hanya membutuhkan setidaknya Java 6 .

  • Di Java 8 dan yang lebih baru dan di perangkat Android yang lebih baru (dari API level 26), API modern sudah ada di dalamnya.
  • Di Java 6 dan 7 dapatkan ThreeTen Backport, backport dari kelas modern (ThreeTen untuk JSR 310; lihat tautan di bagian bawah).
  • Pada (yang lebih tua) Android menggunakan ThreeTen Backport edisi Android. Itu disebut ThreeTenABP. Dan pastikan Anda mengimpor kelas tanggal dan waktu dari org.threeten.bpdengan subpackages.

Tautan

Ole VV
sumber
Jawaban yang sangat bagus Tetapi bagaimana saya bisa mengubah ThreeTen LocalDateTime ke Date? Saya menggunakan Firebase, dan prasyarat untuk menyimpan stempel waktu adalah objek Tanggal.
H.Karatsanov
@ H.Karatsanov Jika menggunakan backport yang: DateTimeUtils.toDate(yourLocalDateTime.atZone(ZoneId.systemDefault()).toInstant()). Jika menggunakan built-in java.time: Date.from(yourLocalDateTime.atZone(ZoneId.systemDefault()).toInstant()). Lihat Mengubah antara java.time.LocalDateTime dan java.util.Date . Jawaban otoritatif oleh JodaStephen ada di sana, dan juga jawaban yang menunjukkan penggunaan backport .
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
sumber
Apakah itu menyumbang sesuatu yang substansial terhadap pertanyaan ( saya ingin tanggal saat ini dalam format string, seperti28-Dec-2011 ) yang belum ada di jawaban lain? Bagaimanapun juga masih menggunakan kelas yang terkenal merepotkan dan lama usang SimpleDateFormat. Tolong, kita tidak perlu jawaban lagi untuk melakukan itu.
Ole VV
itu berfungsi untuk praktik terbaik tambahkan lokal parameter kedua SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("yyyy / MM / dd", Locale.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
sumber
3

Tweak sederhana untuk solusi Paresh:

Date date = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String formattedDate = df.format(date);
cNgamba
sumber
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
sumber
2

Anda dapat menggunakan kode berikut untuk mendapatkan tanggal dalam format yang Anda inginkan.

String date = String.valueOf(android.text.format.DateFormat.format("dd-MM-yyyy", new java.util.Date()));
Android Dev
sumber
Bagus satu liner dan bekerja pada Sdks yang lebih rendah. DateFormat.format beberapa karakter lebih pendek ("dd-MM-yyyy", java.util.Date ()) baru. 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);

Yang ini adalah jawaban terbaik ...

Fatima
sumber
0

Cara paling sederhana untuk mendapatkan tanggal saat ini di lokal saat ini (perangkat lokal!):

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

Jika Anda ingin memiliki tanggal dalam gaya yang berbeda, gunakan getDateInstance(int style):

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

Gaya lain: DateFormat.LONG, DateFormat.DATE_FIELD, DateFormat.DAY_OF_YEAR_FIELD, dll (gunakan CTRL+Spaceuntuk melihat semua dari mereka)

Jika Anda membutuhkan waktu juga:

String currentDateTime = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.LONG).format(Calendar.getInstance().getTime());
Ivo Stoyanov
sumber
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
sumber
0

coba dengan tautan kode ini, ini adalah jawaban yang benar-benar benar untuk semua kasus sepanjang tanggal dan waktu. atau sesuaikan tanggal dan waktu sesuai kebutuhan dan persyaratan aplikasi.

coba dengan tautan ini. coba dengan tautan ini

Amitsharma
sumber
0

Saya menulis aplikasi kalender menggunakan CalendarView dan ini adalah kode saya:

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

bidang 'kalender' adalah CalendarView saya. Impor:

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

Saya mendapatkan tanggal saat ini tanpa kesalahan.

Muskovets
sumber
0

Ini adalah kode yang saya gunakan:

             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
sumber
0

Saya sudah menggunakan ini:

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

pada awalnya saya mendapatkan waktu, kemudian saya mendeklarasikan Format Tanggal Sederhana (untuk mendapatkan tanggal seperti: 19-6-2018) kemudian saya menggunakan format untuk mengubah tanggal menjadi string.

Ahmadi Farshid
sumber
0

hanya satu kode baris untuk mendapatkan format Tanggal yang sederhana:

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

output: 18-Mei-2020

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

output: 18-Mei-2020 11:00:39

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

output: 11:00:39 pagi

Semoga jawaban ini cukup untuk mendapatkan Format Tanggal dan Waktu ini ... :)

vijay saini
sumber
Tolong jangan mengajari anak-anak untuk menggunakan kelas SimpleDateFormatdan DateFormatkelas yang lama dan terkenal merepotkan . Setidaknya bukan sebagai opsi pertama. Dan bukan tanpa reservasi apa pun. Hari ini kita memiliki jauh lebih baik di java.time, tanggal dan waktu API Jawa modern, dan itu DateTimeFormatter. Ya, Anda bisa menggunakannya di Android. Untuk Android yang lebih lama lihat Cara menggunakan ThreeTenABP di Android Project .
Ole VV
-1

Ini adalah kode yang saya gunakan :

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
sumber