kalender waktu yang salah setelah perubahan zona waktu

Saya perlu mendapatkan tanggal 5 bulan yang lalu dari saat ini dengan hari pertama bulan itu, saya menggunakan kode ini untuk melakukannya:

val date = Calendar.getInstance()
date.add(Calendar.MONTH, -5)
date.set(Calendar.DAY_OF_MONTH, 1)
date.set(Calendar.HOUR_OF_DAY, 0)
date.set(Calendar.MINUTE, 0)
date.set(Calendar.SECOND, 0)

Biasanya berfungsi dengan baik, mulai dari 2018-08-10T15:46:53+02:00 dibutuhkan 2018-03-01T00:00:00+01:00

Tetapi jika saya mengubah zona waktu ke GMT+7, melanjutkan aplikasi dan menjalankan kode ini, ini memberi saya hasil yang aneh beberapa hari sebelum diperlukan: 2018-02-28T20:00:00+01:00.

Jika saya menghapus aplikasi dari memori dan memulainya lagi setelah mengubah zona waktu, semuanya berfungsi dengan baik.


person Max Makeichik    schedule 10.08.2018    source sumber


Jawaban (1)


Gunakan perpustakaan JodaTime maka kode Anda akan terlihat seperti ini:

DateTime now = DateTime.now();
DateTime fiveMonthsAgo= now.minusMonths(5);

Jika tidak, Anda harus mengurangi tahun secara manual bila diperlukan.

person UgAr0FF    schedule 10.08.2018