Saya memiliki objek tanggal Java:
Date currentDate = new Date();
Ini akan memberikan tanggal dan waktu saat ini. Contoh:
Thu Jan 12 10:17:47 GMT 2012
Sebaliknya, saya ingin mendapatkan tanggalnya, mengubahnya menjadi satu jam yang lalu sehingga seharusnya memberi saya:
Thu Jan 12 09:17:47 GMT 2012
Apa cara terbaik untuk melakukannya?
mktime
padanannya di java? kurangi 60 menit darinya?Jawaban:
java.util.Calendar
java.util.Date
org.joda.time.LocalDateTime
Java 8: java.time.LocalDateTime
Java 8 java.time.Instant
sumber
Mirip dengan solusi @Sumit Jain
atau
sumber
Date currentDate = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(10));
Ini harus 10 menit di belakang?tl; dr
Dalam UTC :
Atau, dikategorikan:
Menggunakan java.time
Java 8 dan yang lebih baru memiliki framework java.time baru bawaan .
Instant
Jika Anda hanya peduli tentang UTC (GMT), maka gunakan
Instant
kelas tersebut.Buang ke konsol.
Perhatikan bagaimana saat ini terjadi melewatkan kembali ke tanggal kemarin.
ZonedDateTime
Jika Anda peduli dengan zona waktu, gunakan
ZonedDateTime
kelas. Anda dapat memulai dengan Sekejap dan menetapkan zona waktu,ZoneId
objek. Kelas ini menangani penyesuaian yang diperlukan untuk anomali seperti Daylight Saving Time (DST) .Buang ke konsol.
Konversi
Kelas java.util.Date/.Calendar lama sekarang sudah ketinggalan zaman. Hindari mereka. Mereka terkenal merepotkan dan membingungkan.
Jika Anda harus menggunakan kelas lama untuk beroperasi dengan kode lama yang belum diperbarui untuk jenis java.time, panggil metode konversi. Berikut adalah contoh kode dari Instan atau ZonedDateTime ke java.util.Date.
…atau…
Tentang java.time
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
.Proyek Joda-Time , sekarang dalam mode pemeliharaan , menyarankan migrasi ke kelas java.time .
Untuk mempelajari lebih lanjut, lihat Tutorial Oracle . Dan cari Stack Overflow untuk banyak contoh dan penjelasan. Spesifikasinya adalah JSR 310 .
Anda dapat bertukar objek java.time langsung dengan database Anda. Gunakan driver JDBC yang sesuai dengan JDBC 4.2 atau yang lebih baru. Tidak perlu string, tidak perlu
java.sql.*
kelas.Di mana mendapatkan kelas java.time?
Proyek ThreeTen-Extra memperluas java.time dengan kelas tambahan. Proyek ini adalah tempat pembuktian untuk kemungkinan penambahan java.time di masa mendatang. Anda mungkin menemukan beberapa kelas berguna di sini seperti
Interval
,YearWeek
,YearQuarter
, dan lebih .sumber
Gunakan Kalender .
sumber
Atau menggunakan perpustakaan Joda Time yang terkenal :
sumber
Kurangi saja jumlah milidetik dalam satu jam dari tanggal tersebut.
currentDate.setTime(currentDate.getTime() - 3600 * 1000));
sumber
Anda dapat menggunakan dari kode di bawah ini untuk tanggal dan waktu:
Keluaran:
Tautan ini bagus: Lihat di sini
Dan lihat: Lihat juga
Dan: Sini
Dan: Sini
Dan: Sini
Jika Anda hanya membutuhkan waktu:
sumber
Ini bisa dicapai dengan menggunakan
java.util.Date
. Kode berikut akan mengurangi 1 jam dari tanggal Anda.Demikian pula untuk mengurangi 20 detik dari tanggal Anda
sumber
Dapatkan waktu dalam milidetik, dikurangi menit Anda dalam milidetik dan konversikan ke Tanggal. Di sini Anda perlu merealisasikannya !!!
sumber
Ini bekerja untuk saya daripada menggunakan format. Untuk bekerja dengan waktu, cukup gunakan metode parse dan toString ()
String localTime = "6:11"; LocalTime localTime = LocalTime.parse (waktu lokal)
LocalTime lt = 6:11; localTime = lt.toString ()
sumber