Jika Anda menggunakan Java 8 atau yang lebih baru, Anda dapat menggunakan api tanggal / waktu yang baru. Lihat jawaban ini: stackoverflow.com/a/23910924/1115554
micha
4
DateTime () baru. plusDays (1) .toDate () ???
Pietro
Jawaban:
686
Sesuatu seperti ini harus melakukan trik:
String dt ="2008-01-01";// Start dateSimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");Calendar c =Calendar.getInstance();
c.setTime(sdf.parse(dt));
c.add(Calendar.DATE,1);// number of days to add
dt = sdf.format(c.getTime());// dt is now the new date
@ Esko, c.roll (Calendar.DATE, true) tidak akan menggulung bulan pada hari terakhir bulan itu.
Sam Hasler
18
@Ammar itu ide yang buruk jika Anda tidak mengerti apa
niccolo m.
13
Saya akan mengutip beberapa JavaDocs ... Calendar.DATE: "... Ini adalah sinonim untuk DAY_OF_MONTH." Saya berharap JavaDocs akan menjelaskan bahwa ini akan menambah bidang yang lebih besar (seperti bulan dan tahun). Calendar.roll "Menambahkan atau mengurangi (atas / bawah) satu unit waktu pada bidang waktu yang diberikan tanpa mengubah bidang yang lebih besar" .. Sekali lagi, "bidang yang lebih besar" tidak jelas tetapi tampaknya konsisten dengan komentar Sam. Saya berharap ada StackOverflow untuk memperbaiki JavaDocs lama.
jcalfee314
4
teman-teman, sayangnya, tidak ada gunanya menambahkan hari menggunakan DATE, DAY_OF_MONTH atau bahkan DAY_OF_YEAR - semuanya bertambah dengan modulus. Jadi mengingat Kalender 31-12-1970, tambahkan (DAY_OF_YEAR, 1) atau roll (), namun roll () akhirnya panggilan add (), akan memberikan 01-01-1970. Saya kira satu-satunya cara yang benar adalah mengatur waktu dengan milidetik. Sedangkan saya, saya tidak pernah menggunakan kelas Kalender lagi.
Dmitry Gryazin
14
@Bagzerg: Anda salah . add()akan menggulung tanggal. Lihat di ideone .
Jean Hominal
212
Java tampaknya jauh di belakang bola delapan dibandingkan dengan C #. Metode utilitas ini menunjukkan cara melakukannya di Java SE 6 menggunakan metode Calendar.add (mungkin satu-satunya cara mudah).
publicclassDateUtil{publicstaticDate addDays(Date date,int days){Calendar cal =Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days);//minus number would decrement the daysreturn cal.getTime();}}
Untuk menambahkan satu hari, per pertanyaan yang diajukan, sebut sebagai berikut:
String sourceDate ="2012-02-29";SimpleDateFormat format =newSimpleDateFormat("yyyy-MM-dd");Date myDate = format.parse(sourceDate);
myDate =DateUtil.addDays(myDate,1);
Anda dapat menghapus panggilan parser untuk membangun DateTime. Gunakan DateTime date = DateTime baru (dateString); Kemudian, nextDay adalah ISODateTimeFormat.date (). Print (date.plusDays (1)); Lihat joda-time.sourceforge.net/api-release/org/joda/time/… untuk info lebih lanjut.
FYI ... Proyek Joda-Time sekarang dalam mode pemeliharaan, dan menyarankan migrasi ke kelas java.time . Kedua upaya itu dipimpin oleh orang yang sama, Stephen Colebourne. Jadi mereka berbagi konsep yang sama, dan migrasi tidak sulit.
Basil Bourque
40
Harap perhatikan bahwa baris ini menambahkan 24 jam:
d1.getTime()+1*24*60*60*1000
tetapi baris ini menambahkan satu hari
cal.add(Calendar.DATE,1);
Pada hari dengan perubahan waktu musim panas (25 atau 23 jam), Anda akan mendapatkan hasil yang berbeda!
Java 8 menambahkan API baru untuk bekerja dengan tanggal dan waktu.
Dengan Java 8 Anda dapat menggunakan baris kode berikut:
// parse date from yyyy-mm-dd patternLocalDate januaryFirst =LocalDate.parse("2014-01-01");// add one dayLocalDate januarySecond = januaryFirst.plusDays(1);
@ Subho Untuk Android sebelum 26, lihat proyek ThreeTenABP yang mengadaptasi proyek ThreeTen-Backport , sebuah port-belakang jika sebagian besar fungsi waktu java ke Java 6 dan Java 7.
Basil Bourque
29
Anda dapat menggunakan lib java.util sederhana
Calendar cal =Calendar.getInstance();
cal.setTime(yourDate);
cal.add(Calendar.DATE,1);
yourDate = cal.getTime();
Jawaban ini menggandakan konten dari beberapa Jawaban termasuk Jawaban yang diterima dari tiga tahun yang lalu. Hapus Jawaban Anda atau edit untuk menambah nilai.
Basil Bourque
3
jawaban ini lebih bersih, tidak mem-parsing tanggal di tengah. "jawaban yang diterima" terlalu berbelit-belit. ada baiknya Anda menambahkan milik Anda, abaikan ucapan otomatis basil
Jawaban terbaik, langsung pada intinya. Saya setuju dengan Mickey, abaikan saja komentar basil
eramirez75
23
Date today =newDate();SimpleDateFormat formattedDate =newSimpleDateFormat("yyyyMMdd");Calendar c =Calendar.getInstance();
c.add(Calendar.DATE,1);// number of days to add String tomorrow =(String)(formattedDate.format(c.getTime()));System.out.println("Tomorrows date is "+ tomorrow);
Ini akan memberi tanggal besok. c.add(...)parameter dapat diubah dari 1 ke nomor lain untuk kenaikan yang sesuai.
Anda dapat melakukan sesuatu seperti c.setTime (objek Tanggal) untuk menetapkan Tanggal tertentu sebelum menambahkan.
Linh Lino
Saya berharap paket-paket java default akan membuat penanganan tanggal tidak berbelit-belit ... Maksud saya itu
menyebalkan
1
@Shn_Android_Dev Kelas java.time dibangun ke dalam Java 8 dan kemudian menggantikan kelas tanggal-waktu lama yang mengerikan, dan menjawab keinginan Anda. Juga porting kembali ke Java 6/7 & Android sebelumnya dalam proyek ThreeTen-Backport dan ThreeTenABP . Tidak perlu pernah digunakan Dateatau Calendarlagi.
Basil Bourque
19
Jika Anda menggunakan Java 8 , maka lakukan seperti ini.
LocalDate sourceDate =LocalDate.of(2017,Month.MAY,27);// Source DateLocalDate destDate = sourceDate.plusDays(1);// Adding a day to source date.DateTimeFormatter formatter =DateTimeFormatter.ofPattern("yyyy-MM-dd");// Setting date formatString destDate = destDate.format(formatter));// End date
Jika Anda ingin menggunakan SimpleDateFormat , maka lakukan seperti ini.
String sourceDate ="2017-05-27";// Start dateSimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");Calendar calendar =Calendar.getInstance();
calendar.setTime(sdf.parse(sourceDate));// parsed date and setting to calendar
calendar.add(Calendar.DATE,1);// number of days to addString destDate = sdf.format(calendar.getTime());// End date
Tidak, Pertanyaan meminta nilai tanggal saja dan bukan tanggal. Jadi gunakan LocalDatekelas bukan LocalDateTime.
Basil Bourque
1
Jawaban Anda mengulangi isi setidaknya empat Jawaban lainnya. Tolong jelaskan bagaimana Anda menambahkan nilai di luar itu, atau menghapus sebelum Anda mengumpulkan suara.
Basil Bourque
16
long timeadj =24*60*60*1000;Date newDate =newDate(oldDate.getTime ()+timeadj);
Ini mengambil jumlah milidetik sejak zaman dari oldDate dan menambahkan 1 hari milidetik kemudian menggunakan konstruktor publik Date () untuk membuat tanggal menggunakan nilai baru. Metode ini memungkinkan Anda untuk menambah 1 hari, atau sejumlah jam / menit, tidak hanya sepanjang hari.
Ini mungkin bukan yang diinginkan OP; itu tidak membuat penyesuaian untuk penyesuaian jenis Daylight Savings, lompatan detik dan sebagainya.
mrec
1
Penghematan siang hari harus ditangani oleh zona waktu / lokal. Contoh saya menunjukkan peningkatan dengan durasi kecil. Ketika bertambah berdasarkan hari, kabisat detik bisa menjadi masalah tetapi saat menambahkan jam, itu lebih kecil kemungkinannya meskipun masih mungkin.
Ini menciptakan nilai tanggal-waktu di mana Pertanyaan meminta tanggal saja. Saya menyarankan pendekatan yang lebih bijaksana adalah LocalDatekelas di java.time kelas untuk Java 8 dan kemudian, dan back-port ke Java 6 & Java 7 ditemukan dalam proyek ThreeTen-Backport .
Ini sangat sederhana, berusaha menjelaskan dengan kata sederhana. dapatkan tanggal hari ini seperti di bawah ini
Calendar calendar =Calendar.getInstance();System.out.println(calendar.getTime());// print today's date
calendar.add(Calendar.DATE,1);
Sekarang atur satu hari ke depan dengan tanggal ini dengan metode calendar.add yang memakan waktu (konstan, nilai). Di sini konstanta dapat DATE, jam, min, detik dll dan nilai adalah nilai konstanta. Seperti untuk satu hari, konstanta ke depan adalah Calendar.DATE dan nilainya 1 karena kita ingin nilai satu hari ke depan.
System.out.println(calendar.getTime());// print modified date which is tanggal besok
Jika Anda ingin menambahkan satu unit waktu dan Anda berharap bahwa bidang lain akan bertambah juga, Anda dapat menggunakan metode add dengan aman. Lihat contoh di bawah ini:
SimpleDateFormat simpleDateFormat1 =newSimpleDateFormat("yyyy-MM-dd");Calendar cal =Calendar.getInstance();
cal.set(1970,Calendar.DECEMBER,31);System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE,1);System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE,-1);System.out.println(simpleDateFormat1.format(cal.getTime()));
Terima kasih telah mau berkontribusi. Namun ini sudah ada di beberapa jawaban lain, jadi saya benar-benar tidak melihat titik ... Selain itu IMHO tidak ada yang harus menggunakan kelas yang dirancang dengan buruk dan lama usang Calendarpada tahun 2019.
Ole VV
6
Jika Anda menggunakan Java SE 8 atau lebih tinggi Anda harus menggunakan Date / Time API baru
int days =7;LocalDate dateRedeemed =LocalDate.now();DateTimeFormatter formatter =DateTimeFormatter.ofPattern("dd/MM/YYYY");String newDate = dateRedeemed.plusDays(days).format(formatter);System.out.println(newDate);
Jika Anda harus mengonversi dari java.util.Dateke java.time.LocalDate, Anda dapat menggunakan metode ini.
Jika Anda menggunakan versi sebelum Java SE 8, saya menyarankan Anda untuk menggunakan Joda-Time
Joda-Time menyediakan pengganti kualitas untuk kelas tanggal dan waktu Java dan merupakan perpustakaan tanggal dan waktu standar de facto untuk Java sebelum Java SE 8
int days =7;DateTime dateRedeemed =DateTime.now();DateTimeFormatter formatter =DateTimeFormat.forPattern("dd/MM/uuuu");String newDate = dateRedeemed.plusDays(days).toString(formatter);System.out.println(newDate);
Pola Anda untuk java.timebagian ini salah. Itu harus dd/MM/uuuusetara dengan yang JodaTime.
TiiJ7
5
Gunakan DateFormatAPI untuk mengubah String menjadi objek Tanggal, lalu gunakan CalendarAPI untuk menambahkan satu hari. Beri tahu saya jika Anda ingin contoh kode tertentu, dan saya dapat memperbarui jawaban saya.
Bahkan lebih sederhana: Jatuhkan formatter dan gunakan saja toString()untuk menghasilkan string i yyyy-MM-dd format (dan jika Anda bersikeras, ingat bahwa mmini adalah menit sementara MMadalah bulan).
Ole VV
3
Anda dapat menggunakan paket ini dari "org.apache.commons.lang3.time":
Menyarankan Datekelas pada 2018 adalah saran yang buruk. Kelas tanggal-waktu lama merepotkan seperti java.util.Date, java.util.Calendar, dan java.text.SimpleDateFormatsekarang warisan , digantikan oleh java.time kelas dibangun ke Jawa 8 & Java 9. Lihat Tutorial oleh Oracle . Lihat Jawaban lain menggunakan LocalDatekelas.
Basil Bourque
Ya itu, LocalDate ADALAH cara terbaik untuk melakukan itu,
Shaheed
namun beberapa kerangka kerja seperti jsf memiliki sedikit masalah integrasi dengan API waktu jadi terkadang Anda harus menggunakan Tanggal; plus java lingkungan <8
Lucke
1
@Lucke Sebagian besar fungsi java.time di -porting kembali ke Java 6 & 7 di proyek ThreeTen-Backport . Selanjutnya diadaptasi ke Android yang lebih tua dalam proyek ThreeTenABP . Jadi, benar-benar tidak perlu pernah menyentuh kelas-tanggal tua yang mengerikan itu. Banyak kerangka kerja telah diperbarui. Tapi tidak semua. Jadi jika Anda harus beroperasi dengan kode lama yang belum diperbarui ke java.time , tulis kode baru Anda di java.time dan konversikan ke / dari tipe lama dengan memanggil metode konversi baru yang ditambahkan ke kelas lama.
Basil Bourque
1
Kode ini mengabaikan masalah penting zona waktu . Untuk setiap saat, tanggal bervariasi di sekitar bola dunia menurut zona. The SimpleDateFormatkelas sayangnya menyuntikkan zona waktu, secara implisit menerapkan zona default JVM saat ini. Jadi hasil dari kode ini akan bervariasi tergantung pada apa pun default saat ini - dan standar itu dapat berubah setiap saat selama runtime.
Basil Bourque
3
Sederhana sebenarnya. Suatu hari mengandung 86400000 milidetik. Jadi pertama-tama Anda mendapatkan waktu saat ini dalam milidetik dari Sistem dengan menggunakan System.currentTimeMillis()kemudian tambahkan 84000000 milidetik dan menggunakan DateKelas untuk menghasilkan format tanggal untuk milidetik.
Contoh
String Today = new Date(System.currentTimeMillis()).toString();
String Today akan menjadi 2019-05-9
String Tommorow = new Date(System.currentTimeMillis() + 86400000).toString();
String Tommorow akan menjadi 2019-05-10
String DayAfterTommorow = new Date(System.currentTimeMillis() + (2 * 86400000)).toString();
Kode ini menggunakan Datekelas mengerikan yang digantikan tahun yang lalu oleh kelas java.time modern . Jauh lebih sederhana untuk hanya menggunakan:LocalDate.parse( "2019-01-23" ).plusDays( 1 )
Basil Bourque
2
Mari kita perjelas kasus penggunaan: Anda ingin melakukan aritmatika kalender dan memulai / mengakhiri dengan java.util.Date .
Beberapa pendekatan:
Konversikan ke string dan kembali dengan SimpleDateFormat : Ini adalah solusi yang tidak efisien.
Konversikan ke LocalDate : Anda akan kehilangan informasi sepanjang hari.
Konversikan ke LocalDateTime : Ini melibatkan lebih banyak langkah dan Anda perlu khawatir tentang zona waktu.
Konversikan ke zaman dengan Date.getTime () : Ini efisien tetapi Anda menghitung dengan milidetik.
Jangan pernah mencampurkan kelas warisan yang mengerikan seperti Datedengan kelas java.time modern seperti Instant. The java.time kelas sepenuhnya menggantikan kelas warisan. Secara khusus, Instantdiganti java.util.Date.
Basil Bourque
1
Tidak menjawab Pertanyaan. Anda menggunakan kelas-kelas yang mewakili momen (tanggal dengan waktu dalam konteks offset atau zona). Tetapi Pertanyaan menanyakan tentang tanggal-saja tanpa waktu-hari dan tanpa zona waktu. Lihat Jawaban benar oleh Sobral dan Jawaban benar oleh micha.
Basil Bourque
0
Date newDate =newDate();
newDate.setDate(newDate.getDate()+1);System.out.println(newDate);
Di komputer saya sepertinya berfungsi melintasi batas bulan. Setelah Sun Apr 30 16:25:33 CEST 2017datang Mon May 01 16:25:33 CEST 2017. Ini masih merupakan solusi yang tidak dianjurkan. Metode ini tidak hanya ditinggalkan karena alasan yang baik, juga pada tahun 2017 kami memiliki alternatif yang sangat baik untuk Datekelas.
Jawaban:
Sesuatu seperti ini harus melakukan trik:
sumber
add()
akan menggulung tanggal. Lihat di ideone .Java tampaknya jauh di belakang bola delapan dibandingkan dengan C #. Metode utilitas ini menunjukkan cara melakukannya di Java SE 6 menggunakan metode Calendar.add (mungkin satu-satunya cara mudah).
Untuk menambahkan satu hari, per pertanyaan yang diajukan, sebut sebagai berikut:
sumber
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 .waktu java
Pada Java 8 dan yang lebih baru, paket java.time membuat ini cukup otomatis. ( Tutorial )
Dengan asumsi
String
input dan output:sumber
ZonedDateDateTime
danOffsetDateTime
juga memilikiplusDays
danminusDays
metode sertaLocalDate
LocalDate
.Saya lebih suka menggunakan DateUtils dari Apache. Lihatlah http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html . Ini berguna terutama ketika Anda harus menggunakannya di banyak tempat di proyek Anda dan tidak ingin menulis metode satu liner untuk ini.
API mengatakan:
Perhatikan bahwa ia mengembalikan objek Date baru dan tidak membuat perubahan ke objek sebelumnya itu sendiri.
sumber
sumber
Bangun objek Kalender dan gunakan metode add (Calendar.DATE, 1);
sumber
Lihatlah Joda-Time ( https://www.joda.org/joda-time/ ).
sumber
Harap perhatikan bahwa baris ini menambahkan 24 jam:
tetapi baris ini menambahkan satu hari
Pada hari dengan perubahan waktu musim panas (25 atau 23 jam), Anda akan mendapatkan hasil yang berbeda!
sumber
Java 8 menambahkan API baru untuk bekerja dengan tanggal dan waktu.
Dengan Java 8 Anda dapat menggunakan baris kode berikut:
sumber
januaryFirst.plusDays(1)
tidak bermaksud demikiandate.plusDays(1)
.Anda dapat menggunakan lib java.util sederhana
sumber
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 .Ini akan memberi tanggal besok.
c.add(...)
parameter dapat diubah dari 1 ke nomor lain untuk kenaikan yang sesuai.sumber
Date
atauCalendar
lagi.Jika Anda menggunakan Java 8 , maka lakukan seperti ini.
Jika Anda ingin menggunakan SimpleDateFormat , maka lakukan seperti ini.
sumber
LocalDate
kelas bukanLocalDateTime
.Ini mengambil jumlah milidetik sejak zaman dari oldDate dan menambahkan 1 hari milidetik kemudian menggunakan konstruktor publik Date () untuk membuat tanggal menggunakan nilai baru. Metode ini memungkinkan Anda untuk menambah 1 hari, atau sejumlah jam / menit, tidak hanya sepanjang hari.
sumber
Sejak Java 1.5 TimeUnit.DAYS.toMillis (1) terlihat lebih bersih bagi saya.
sumber
LocalDate
kelas di java.time kelas untuk Java 8 dan kemudian, dan back-port ke Java 6 & Java 7 ditemukan dalam proyek ThreeTen-Backport .Di Java 8 cara mudah yang harus dilakukan adalah:
sumber
Instant.now().plus( 1 , ChronoUnit.DAYS )
?Di java 8 Anda bisa menggunakan
java.time.LocalDate
Anda dapat mengonversinya menjadi
java.util.Date
objek sebagai berikut.Anda dapat memformat
LocalDate
menjadi String sebagai berikut.sumber
Ini sangat sederhana, berusaha menjelaskan dengan kata sederhana. dapatkan tanggal hari ini seperti di bawah ini
Sekarang atur satu hari ke depan dengan tanggal ini dengan metode calendar.add yang memakan waktu (konstan, nilai). Di sini konstanta dapat DATE, jam, min, detik dll dan nilai adalah nilai konstanta. Seperti untuk satu hari, konstanta ke depan adalah Calendar.DATE dan nilainya 1 karena kita ingin nilai satu hari ke depan.
System.out.println(calendar.getTime());// print modified date which is
tanggal besokTerima kasih
sumber
Apache Commons sudah memiliki DateUtils.addDays ini (Tanggal tanggal, jumlah int) http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateUtils.html#addDays%28java .util.Date,% 20int% 29 yang Anda gunakan atau Anda bisa menggunakan JodaTime untuk membuatnya lebih bersih.
sumber
Masukkan tanggal dalam String dan jumlah hari berikutnya
sumber
Jika Anda ingin menambahkan satu unit waktu dan Anda berharap bahwa bidang lain akan bertambah juga, Anda dapat menggunakan metode add dengan aman. Lihat contoh di bawah ini:
Akan Cetak:
sumber
sumber
Calendar
pada tahun 2019.Jika Anda menggunakan Java SE 8 atau lebih tinggi Anda harus menggunakan Date / Time API baru
Jika Anda harus mengonversi dari
java.util.Date
kejava.time.LocalDate
, Anda dapat menggunakan metode ini.Jika Anda menggunakan versi sebelum Java SE 8, saya menyarankan Anda untuk menggunakan Joda-Time
sumber
java.time
bagian ini salah. Itu harusdd/MM/uuuu
setara dengan yang JodaTime.Gunakan
DateFormat
API untuk mengubah String menjadi objek Tanggal, lalu gunakanCalendar
API untuk menambahkan satu hari. Beri tahu saya jika Anda ingin contoh kode tertentu, dan saya dapat memperbarui jawaban saya.sumber
Jika Anda menggunakan Java 8,
java.time.LocalDate
danjava.time.format.DateTimeFormatter
dapat membuat pekerjaan ini cukup sederhana.sumber
toString()
untuk menghasilkan string i yyyy-MM-dd format (dan jika Anda bersikeras, ingat bahwamm
ini adalah menit sementaraMM
adalah bulan).Anda dapat menggunakan paket ini dari "org.apache.commons.lang3.time":
sumber
Date
kelas pada 2018 adalah saran yang buruk. Kelas tanggal-waktu lama merepotkan sepertijava.util.Date
,java.util.Calendar
, danjava.text.SimpleDateFormat
sekarang warisan , digantikan oleh java.time kelas dibangun ke Jawa 8 & Java 9. Lihat Tutorial oleh Oracle . Lihat Jawaban lain menggunakanLocalDate
kelas.SimpleDateFormat
kelas sayangnya menyuntikkan zona waktu, secara implisit menerapkan zona default JVM saat ini. Jadi hasil dari kode ini akan bervariasi tergantung pada apa pun default saat ini - dan standar itu dapat berubah setiap saat selama runtime.Sederhana sebenarnya. Suatu hari mengandung 86400000 milidetik. Jadi pertama-tama Anda mendapatkan waktu saat ini dalam milidetik dari Sistem dengan menggunakan
System.currentTimeMillis()
kemudian tambahkan 84000000 milidetik dan menggunakanDate
Kelas untuk menghasilkan format tanggal untuk milidetik.Contoh
String Today = new Date(System.currentTimeMillis()).toString();
String Today akan menjadi 2019-05-9
String Tommorow = new Date(System.currentTimeMillis() + 86400000).toString();
String Tommorow akan menjadi 2019-05-10
String DayAfterTommorow = new Date(System.currentTimeMillis() + (2 * 86400000)).toString();
String DayAfterTommorow akan menjadi 2019-05-11
sumber
Date
kelas mengerikan yang digantikan tahun yang lalu oleh kelas java.time modern . Jauh lebih sederhana untuk hanya menggunakan:LocalDate.parse( "2019-01-23" ).plusDays( 1 )
Mari kita perjelas kasus penggunaan: Anda ingin melakukan aritmatika kalender dan memulai / mengakhiri dengan java.util.Date .
Beberapa pendekatan:
Pertimbangkan menggunakan java.time.Instant :
sumber
Date
dengan kelas java.time modern sepertiInstant
. The java.time kelas sepenuhnya menggantikan kelas warisan. Secara khusus,Instant
digantijava.util.Date
.sumber
Sun Apr 30 16:25:33 CEST 2017
datangMon May 01 16:25:33 CEST 2017
. Ini masih merupakan solusi yang tidak dianjurkan. Metode ini tidak hanya ditinggalkan karena alasan yang baik, juga pada tahun 2017 kami memiliki alternatif yang sangat baik untukDate
kelas.