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?


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


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")

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


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"

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>

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.