Bagaimana memformat dengan benar sesuai dengan tanggal dan waktu konfigurasi perangkat ketika memiliki satu tahun, bulan, hari, jam dan menit?
321
Gunakan kelas Java DateFormat standar.
Misalnya untuk menampilkan tanggal dan waktu saat ini lakukan hal berikut:
Date date = new Date(location.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
Anda dapat menginisialisasi objek Tanggal dengan nilai Anda sendiri, namun Anda harus menyadari bahwa konstruktor telah usang dan Anda benar-benar harus menggunakan objek Kalender Java.
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
DateFormat yang dikembalikan bertipejava.text.DateFormat
(dan BUKANandroid.text.format.DateFormat
)Menurut pendapat saya,
android.text.format.DateFormat.getDateFormat(context)
membuat saya bingung karena metode ini mengembalikanjava.text.DateFormat
daripadaandroid.text.format.DateFormat
- - ".Jadi, saya menggunakan kode fragmen seperti di bawah ini untuk mendapatkan tanggal / waktu saat ini dalam format saya.
Selain itu, Anda dapat menggunakan format lain. Ikuti DateFormat .
sumber
hh:mm:ss
akan memberi Anda01:00:00
untuk 1 PM, Anda harus menggunakankk:mm:ss
untuk mendapatkan13:00:00
k
adalah jam dalam sehari (1-24), maksud AndaH
, yaitu jam dalam hari (0-23), mis. HH: mm: dd? Lihat: developer.android.com/reference/java/text/SimpleDateFormat.htmljava.text.SimpleDateFormat
(apa yang Anda tautkan dan gunakanH
selama berjam-jam dalam rentang 0-23) danandroid.text.format.DateFormat
(apa jawabannya dan gunakank
selama berjam-jam dalam rentang 0-23)k
, namun, dokumentasi untukDateFormat
status yang jelas. Untuk dokumentasi kanonik dari string format, lihat SimpleDateFormat. Sangat membingungkan. Atau apakah saya melewatkan sesuatu?Anda bisa menggunakannya
DateFormat
. Hasil tergantung pada Lokal default ponsel, tetapi Anda juga dapat menentukan Lokal:https://developer.android.com/reference/java/text/DateFormat.html
Ini adalah hasil pada a
FR Lokal: 3 nov. 2017
Lokal AS / En: 12 Januari 1952
FR Lokal: 03/11/2017
Lokal AS / En: 12.13.52
FR Lokal: 3 nov. 2017
Lokal AS / En: 12 Januari 1952
FR Lokal: 3 November 2017
Lokal AS / En: 12 Januari 1952
FR Lokal: vendredi 3 novembre 2017
Lokal AS / En: Selasa, 12 April 1952
FR Lokal: 3 nov. 2017 16:04:58
FR Lokal: 03/11/2017 16:04
FR Lokal: 03/11/2017 16:04:58
FR Lokal: 03/11/2017 16:04:58 GMT + 01: 00
FR Lokal: 03/11/2017 16:04:58 heure normale d'Europe centrale
FR Lokal: 16:04:58
FR Lokal: 16:04
FR Lokal: 16:04:58
FR Lokal: 16:04:58 GMT + 01: 00
FR Lokal: 16:04:58 heure normale d'Europe centrale
sumber
Date to Locale date string:
Pilihan:
-> 31 Des 1969
-> 31 Des 1969 4:00:00 PM
-> 4:00:00 PM
sumber
Ini akan melakukannya:
sumber
Gunakan SimpleDateFormat
Seperti ini:
sumber
new SimpleDateFormat("my-format", Locale.getDefault());
Berikut ini: http://developer.android.com/reference/android/text/format/Time.html
Lebih baik menggunakan kelas Waktu asli Android:
Kemudian format:
sumber
Gunakan keduanya sebagai variabel kelas:
Dan gunakan seperti ini:
sumber
Ini adalah metode saya, Anda dapat menentukan dan memasukkan serta menampilkan format.
sumber
SimpleDateFormat
Saya menggunakan SimpleDateFormat tanpa pola khusus untuk mendapatkan tanggal dan waktu aktual dari sistem dalam format yang dipilih perangkat :
pengembalian :
sumber
Gunakan build di kelas Time!
sumber
Jawaban lain umumnya benar. Saya ingin berkontribusi jawaban modern. Kelas-kelas
Date
,DateFormat
danSimpleDateFormat
digunakan di sebagian besar jawaban lain, sudah lama ketinggalan dan telah menyebabkan masalah bagi banyak programmer selama bertahun-tahun. Hari ini kami memiliki jauh lebih baik dijava.time
, AKA JSR-310, API tanggal & waktu Jawa modern. Bisakah Anda menggunakan ini di Android? Hampir dipastikan! Kelas-kelas modern telah di-backport ke Android dalam proyek ThreeTenABP. Lihat pertanyaan ini: Cara menggunakan ThreeTenABP di Android Project untuk semua detail.Cuplikan ini akan membantu Anda memulai:
Ketika saya mengatur bahasa pilihan komputer saya ke US English atau UK English, ini mencetak:
Ketika sebaliknya saya mengaturnya ke Denmark, saya mendapatkan:
Jadi tidak mengikuti konfigurasi. Saya tidak yakin persisnya detail apa yang mengikuti pengaturan tanggal dan waktu perangkat Anda, dan ini mungkin berbeda dari ponsel ke ponsel.
sumber
Kode ini berfungsi untuk saya!
sumber
Format tanggal kelas bekerja dengan kode cheat untuk membuat tanggal. Suka
Anda dapat memeriksa lebih banyak kode curang di sini .
sumber
Kode ini akan mengembalikan tanggal dan waktu saat ini:
sumber
Lokal
Untuk mendapatkan tanggal atau waktu dalam format lokal dari milidetik, saya menggunakan ini:
Tanggal dan waktu
Tanggal
Waktu
Anda dapat menggunakan gaya tanggal dan gaya waktu lainnya. Info lebih lanjut tentang gaya di sini .
sumber
Cara terpendek:
%tR
kependekan%tH:%tM
,<
artinya menggunakan kembali parameter terakhir (1$
).Ini setara dengan
String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM", Calendar.getInstance())
https://developer.android.com/reference/java/util/Formatter.html
sumber
Mencoba:
Dan ketika Anda mengakses variabel yang diteruskan:
sumber
Saya menggunakannya seperti ini:
sumber
Hindari menjodohkan
Java.util.Date dan .Calendar dan SimpleDateFormat di Java (dan Android) terkenal merepotkan. Hindari mereka. Mereka begitu buruk sehingga Sun / Oracle menyerah pada mereka, menggantikan mereka dengan paket java.time baru di Java 8 (bukan di Android pada 2014). Yang baru
java.time
terinspirasi oleh perpustakaan Joda-Time .Joda-Time
Joda-Time bekerja di Android.
Cari StackOverflow untuk "Joda" untuk menemukan banyak contoh dan banyak diskusi.
Sebuah tidbit kode sumber menggunakan Joda-Time 2.4.
Format standar.
Format terlokalisasi.
sumber
Kembali ke 2016, Ketika saya ingin menyesuaikan format (tidak sesuai dengan konfigurasi perangkat, seperti yang Anda tanyakan ...) Saya biasanya menggunakan file sumber string:
di strings.xml:
Dalam Aktivitas:
Ini juga berguna dengan rilis Perpustakaan Pengikat Tanggal baru .
Jadi saya dapat memiliki sesuatu seperti ini di file layout:
Dan di kelas java:
sumber
Kelas Waktu android menyediakan 3 metode pemformatan http://developer.android.com/reference/android/text/format/Time.html
Beginilah cara saya melakukannya:
Saya harap itu membantu :-)
sumber
Sudah terlambat tetapi mungkin membantu seseorang
di sini
format
adalah format apa yang Anda butuhkanmis: "HH: mm" mengembalikan 15:30
sumber