mengapa DateTime.ToString ("dd / MM / yyyy") memberi saya dd-MM-yyyy?

155

Saya ingin datetime saya dikonversi ke string yang dalam format "dd / MM / yyyy"

Setiap kali saya mengubahnya menggunakan DateTime.ToString("dd/MM/yyyy"), saya mendapatkan dd-MM-yyyysebagai gantinya.

Apakah ada semacam info budaya yang harus saya atur?

Diskdrive
sumber
lakukan DateTime.ToString ("hh / MM / tttt");
jimplode
2
Saya melakukan itu, itu tidak berhasil, masalahnya bukan tanggal, itu adalah "-", saya ingin itu menjadi "/" seperti yang telah saya tentukan
Diskdrive
7
gunakan MM daripada mm - mm mewakili menit dan bukan bulan.
Lloyd Powell
1
kemungkinan duplikat dari Cara memformat tanggal dengan garis miring dalam C #
Dzyann
The dokumentasi MSDN untuk DateTime.ToString putus asa salah: " Sebagai contoh,‘MM / dd / yyyyHH: mm’format string menampilkan tanggal dan waktu string dalam format tetap ... Menggunakan format string‘/’sebagai fixed pemisah tanggal terlepas dari pengaturan khusus budaya. "
Kolonel Panic

Jawaban:

243

Slash adalah pembatas tanggal, sehingga akan menggunakan pembatas tanggal budaya saat ini.

Jika Anda ingin hard-code untuk selalu menggunakan slash, Anda dapat melakukan sesuatu seperti ini:

DateTime.ToString("dd'/'MM'/'yyyy")
Bojan Bjelic
sumber
2
@pender - dalam beberapa budaya mereka.
Daniel A. White
terima kasih atas jawaban cepat kamu. Kamu benar. Saya akan memberikan jawaban yang benar
Diskdrive
6
Anda juga dapat menggunakan format ini: dateTime.ToString (@ "yyyy \ / MM \ / dd")
base2
2
Meloloskan string format menggunakan backslash juga berfungsi: DateTime.Now.ToString ("dd \\ / MM \\ / yyyy");
TomB
61

Lulus CultureInfo.InvariantCulture sebagai parameter kedua DateTime, itu akan mengembalikan string seperti yang Anda inginkan, bahkan format yang sangat istimewa:

DateTime.Now.ToString("dd|MM|yyyy", CultureInfo.InvariantCulture)

akan kembali: 28 | 02 | 2014

Liu Peng
sumber
Kode ini lebih jelas, daripada dalam jawaban yang diterima (maksud saya menambahkan CultureInfo). Setidaknya terlihat lebih baik daripada lolos dari tebasan oleh apostrof.
Sergey
2
Jelas lebih mudah dibaca daripada menggunakan karakter escape. Saya sedikit terkejut bahwa saya tidak tahu sepanjang waktu bahwa format tanggal saya akan ditimpa!
Savage
10

Tambahkan CultureInfo.InvariantCulturesebagai argumen:

using System.Globalization;

...

var dateTime = new DateTime(2016,8,16);
dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

Akan kembali:

"16/08/2016"
Mikael Engver
sumber
jika pengembang menggunakan metode tostring dengan beberapa huruf seperti Mm ss dll. akan mendapatkan hasil yang salah dengan solusi Anda misalnya Datetime.Now.ToString ("yyyy / dd / mm / Bulan", CultureInfo.InvariantCulture) tidak akan menghasilkan 2017/01 / 02 / Bulan akan menghasilkan 2017/01/02/2 bulan
Okan SARICA
@OkanSARICA jika Anda ingin mengakhiri tanggal dengan "/ Bulan", Anda harus melakukannya setelah metode ToString. DateTime.Now.ToString ("yyyy / MM / dd", CultureInfo.InvariantCulture) + "/ Month";
Mikael Engver
1

Jika Anda menggunakan MVC, tabel, ini berfungsi seperti ini:

<td>@(((DateTime)detalle.fec).ToString("dd'/'MM'/'yyyy"))</td>
Maurico Bello
sumber