Saya memiliki kode berikut dalam program C # saya.
DateTime dateForButton = DateTime.Now;
dateForButton = dateForButton.AddDays(-1); // ERROR: un-representable DateTime
Setiap kali saya menjalankannya, saya mendapatkan kesalahan berikut:
Nilai tambah atau kurang menghasilkan DateTime yang tidak dapat diwakili.
Nama parameter: nilai
Saya belum pernah melihat pesan kesalahan ini sebelumnya, dan tidak mengerti mengapa saya melihatnya. Dari jawaban yang saya baca sejauh ini, saya yakin bahwa saya bisa menggunakan -1 dalam operasi tambah untuk mengurangi hari, tetapi karena pertanyaan saya menunjukkan ini bukan kasus untuk apa yang saya coba lakukan.
DateTime.MinValue
atau Anda ingin menambahkan sesuatu keDateTime.MaxValue
(atau Anda mencoba untuk instantiate tanggal di luar interval min-max ini). Apakah Anda yakin tidak menugaskanMinValue
suatu tempat?Jawaban:
Kesalahan itu biasanya terjadi ketika Anda mencoba mengurangi interval dari
DateTime.MinValue
atau Anda ingin menambahkan sesuatu keDateTime.MaxValue
(atau Anda mencoba untuk instantiate tanggal di luar interval min-max ini). Apakah Anda yakin tidak menugaskanMinValue
suatu tempat?sumber
sumber
Anda dapat melakukan:
sumber
Anda dapat menggunakan kode berikut:
sumber
Tidak
dateTime.AddDays(-1)
mengurangi satu hari daridateTime
referensi. Ini akan mengembalikan contoh baru, dengan itu suatu hari dikurangi dari referensi asli.sumber
Saya punya masalah menggunakan AddDays (-1) .
Solusi saya adalah TimeSpan .
sumber
Objek (yaitu variabel tujuan) untuk metode AddDays tidak boleh sama dengan sumbernya.
Dari pada:
Coba ini sebagai gantinya:
sumber
Alih-alih langsung mengurangi jumlah hari dari objek tanggal secara langsung, dapatkan nilai tanggal terlebih dahulu kemudian kurangi hari. Lihat contoh di bawah ini:
Di sini, someDate adalah variabel tipe DateTime.
sumber
Menggunakan
AddDays(-1)
bekerja untuk saya sampai saya mencoba melewati bulan. Ketika saya mencoba mengurangi 2 hari dari 2017-01-01 hasilnya adalah 2016-00-30. Itu tidak bisa menangani perubahan bulan dengan benar (meskipun tahun tampaknya baik-baik saja).Saya menggunakan
date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd");
dan tidak memiliki masalah.sumber