Bagaimana Anda mendapatkan Jam dan Menit sejak Date.getHours
dan Date.getMinutes
menjadi usang? Contoh yang saya temukan di pencarian Google menggunakan metode yang sudah usang.
Bagaimana Anda mendapatkan Jam dan Menit sejak Date.getHours
dan Date.getMinutes
menjadi usang? Contoh yang saya temukan di pencarian Google menggunakan metode yang sudah usang.
Jawaban:
Coba gunakan Joda Time alih-alih kelas java.util.Date standar. Pustaka Joda Time memiliki API yang jauh lebih baik untuk menangani tanggal.
DateTime dt = new DateTime(); // current time
int month = dt.getMonth(); // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day
Lihat pertanyaan ini untuk pro dan kontra menggunakan perpustakaan Joda Time.
Joda Time juga dapat dimasukkan ke beberapa versi Java di masa mendatang sebagai komponen standar, lihat JSR-310 .
Jika Anda harus menggunakan kelas java.util.Date dan java.util.Calendar tradisional, lihat JavaDoc untuk bantuan ( java.util.Calendar dan java.util.Date ).
Anda bisa menggunakan kelas tradisional seperti ini untuk mengambil bidang dari instance Date yang diberikan.
Date date = new Date(); // given date
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date); // assigns calendar to given date
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
calendar.get(Calendar.HOUR); // gets hour in 12h format
calendar.get(Calendar.MONTH); // gets month number, NOTE this is zero based!
Dari Javadoc untuk Date.getHours
As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)
Jadi gunakan
Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);
dan setara untuk getMinutes.
ZonedDateTime
saja.
Sementara saya penggemar Joda-Time , Java 8 memperkenalkan paket java.time yang akhirnya merupakan solusi standar Java yang berharga! Baca artikel ini, Tanggal dan Waktu Java 8 8 , untuk sejumlah besar informasi tentang java.time di luar jam dan menit.
Secara khusus, lihat LocalDateTime
kelasnya.
Jam dan menit:
LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
LocalDateTime.now(ZoneId.of("Asia/Manilla"))
. Baca now()
hanya sekali untuk konsistensi (waktu akan berlalu di antara dua panggilan). Jika tanggal benar-benar tidak relevan, LocalTime
berfungsi juga.
ZonedDateTime
kelas daripada LocalDateTime
. Dengan LocalDateTime
Anda membuang informasi zona waktu yang berharga tanpa alasan, tanpa hasil apa pun.
ZonedDateTime.now().getHour()
… atau …
LocalTime.now().getHour()
ZonedDateTime
The Answer oleh JD baik tetapi tidak optimal. Jawaban itu menggunakan LocalDateTime
kelas. Karena tidak memiliki konsep zona waktu atau offset-dari-UTC, kelas itu tidak dapat mewakili momen.
Lebih baik digunakan ZonedDateTime
.
ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
Jika Anda menghilangkan ZoneId
argumen, satu diterapkan secara implisit saat runtime menggunakan zona waktu default JVM saat ini.
Jadi ini:
ZonedDateTime.now()
... sama dengan ini:
ZonedDateTime.now( ZoneId.systemDefault() )
Lebih baik secara eksplisit, melewati zona waktu yang Anda inginkan / harapkan. Default dapat berubah setiap saat selama runtime.
Jika kritis, konfirmasikan zona waktu dengan pengguna.
Menginterogasi ZonedDateTime
untuk jam dan menit.
int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;
LocalTime
Jika Anda ingin hanya hari tanpa zona waktu, ekstrak LocalTime
.
LocalTime lt = zdt.toLocalTime() ;
Atau lewati ZonedDateTime
sepenuhnya, langsung ke LocalTime
.
LocalTime lt = LocalTime.now( z ) ; // Capture the current time-of-day as seen in the wall-clock time used by the people of a particular region (a time zone).
The java.time kerangka dibangun ke Jawa 8 dan kemudian. Kelas-kelas ini menggantikan tua merepotkan warisan kelas tanggal-waktu seperti java.util.Date
, Calendar
, & SimpleDateFormat
.
Untuk mempelajari lebih lanjut, lihat Tutorial Oracle . Dan cari Stack Overflow untuk banyak contoh dan penjelasan. Spesifikasi adalah JSR 310 .
Proyek Joda-Time , sekarang dalam mode pemeliharaan , menyarankan migrasi ke kelas java.time .
Anda dapat bertukar objek java.time secara langsung dengan database Anda. Gunakan driver JDBC yang sesuai dengan JDBC 4.2 atau yang lebih baru. Tidak perlu untuk string, tidak perlu untuk java.sql.*
kelas.
Di mana mendapatkan kelas java.time?
Proyek ThreeTen-Extra memperpanjang java.time dengan kelas tambahan. Proyek ini adalah ajang pembuktian untuk kemungkinan penambahan masa depan ke java.time. Anda mungkin menemukan beberapa kelas berguna di sini seperti Interval
, YearWeek
, YearQuarter
, dan lebih .
Coba Kalender. Gunakan getInstance untuk mendapatkan Calender-Object. Kemudian gunakan setTime untuk mengatur Tanggal yang diperlukan. Sekarang Anda bisa menggunakan get (int field) dengan konstanta yang sesuai seperti HOUR_OF_DAY atau lebih untuk membaca nilai yang Anda butuhkan.
http://java.sun.com/javase/6/docs/api/java/util/Calendar.html
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();
Fungsi-fungsi ini akan mengembalikan nilai int dalam jam dan menit.
java.sql.Time
? Tentu saja tidak ada alasan sama sekali untuk memainkan kelas yang sudah ketinggalan zaman itu saat Anda punya java.time.LocalTime
. Anda terlalu rumit.
getMinutes()
sudah tidak digunakan lagi (Saya menggunakan java 1.8) dan telah diganti denganCalendar.get(Calendar.MINUTE)
Satu lagi cara untuk mendapatkan menit dan jam adalah dengan menggunakan SimpleDateFormat.
SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())
SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())
java.util.Date
, java.util.Calendar
, dan java.text.SimpleDateFormat
sekarang warisan , digantikan oleh java.time kelas dibangun ke Jawa 8 dan kemudian. Lihat Tutorial oleh Oracle .
Saya akan merekomendasikan mencari waktu iklan joda. http://www.joda.org/joda-time/
Saya takut menambahkan perpustakaan lain ke proyek saya yang tebal, tetapi hanya mudah dan cepat dan cerdas serta mengagumkan. Plus, ini berfungsi baik dengan kode yang ada, sampai batas tertentu.
Meskipun saya tidak akan merekomendasikan melakukannya, saya pikir itu layak menunjukkan bahwa meskipun banyak metode di java.util.Date telah ditinggalkan, mereka masih bekerja. Dalam situasi sepele, mungkin boleh saja menggunakannya. Juga, java.util.Calendar sangat lambat, jadi getMonth dan getYear on Date mungkin berguna lebih cepat.
import java.util.*
Anda bisa mendapatkan jam dan menit menggunakan kalender dan kelas formatter. Calendar cal = Calendar.getInstance()
dan Formatter fmt=new Formatter()
dan mengatur format untuk menampilkan jam dan menit fmt.format("%tl:%M",cal,cal)
dan System.out.println(fmt)
hasil cetak menunjukkan seperti10:12
java.util.Date
,java.util.Calendar
, danjava.text.SimpleDateFormat
sekarang warisan , digantikan oleh java.time kelas dibangun ke Jawa 8 dan kemudian. Lihat Tutorial oleh Oracle .