Bagaimana Anda mendapatkan Jam dan Menit sejak Date.getHoursdan Date.getMinutesmenjadi usang? Contoh yang saya temukan di pencarian Google menggunakan metode yang sudah usang.
Bagaimana Anda mendapatkan Jam dan Menit sejak Date.getHoursdan Date.getMinutesmenjadi 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.
ZonedDateTimesaja.
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 LocalDateTimekelasnya.
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, LocalTimeberfungsi juga.
ZonedDateTimekelas daripada LocalDateTime. Dengan LocalDateTimeAnda membuang informasi zona waktu yang berharga tanpa alasan, tanpa hasil apa pun.
ZonedDateTime.now().getHour()
… atau …
LocalTime.now().getHour()
ZonedDateTimeThe Answer oleh JD baik tetapi tidak optimal. Jawaban itu menggunakan LocalDateTimekelas. 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 ZoneIdargumen, 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 ZonedDateTimeuntuk jam dan menit.
int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;
LocalTimeJika Anda ingin hanya hari tanpa zona waktu, ekstrak LocalTime.
LocalTime lt = zdt.toLocalTime() ;
Atau lewati ZonedDateTimesepenuhnya, 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.SimpleDateFormatsekarang 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.SimpleDateFormatsekarang warisan , digantikan oleh java.time kelas dibangun ke Jawa 8 dan kemudian. Lihat Tutorial oleh Oracle .