DateTime.ToString (“gg / AA / yyyy”) neden bana gg-AA-yyyy veriyor?


155

Benim datetime "dd / AA / yyyy" biçiminde bir dizeye dönüştürülmesini istiyorum

Ne zaman kullanarak dönüştürdüğümde DateTime.ToString("dd/MM/yyyy"), alıyorum dd-MM-yyyy.

Ayarlamam gereken bir çeşit kültür bilgisi var mı?


DateTime.ToString ("gg / aa / yyyy");
jimplode

2
Bunu yaptım, işe yaramadı, sorun tarihler değil, "-", belirttiğim gibi bir "/" olmasını istiyorum
Diskdrive

7
mm yerine MM kullanın - mm ayları değil dakikaları temsil eder.
Lloyd Powell


DateTime.ToString için MSDN belgelerine umutsuzca yanlıştır: " Örneğin,‘AA / gg / yyyyHH: dd’biçiminde dizesi görüntüler sabit bir biçimde tarih ve saat dize ... biçim dizesi kullanır‘sabit olarak /’ kültüre özgü ortamlardan bağımsız olarak tarih ayırıcı. "
Albay Panik

Yanıtlar:


243

/, Bir tarih sınırlayıcıdır, böylece geçerli kültür tarihi sınırlayıcısını kullanır.

Her zaman eğik çizgi kullanmak için sabit kodlamak isterseniz, böyle bir şey yapabilirsiniz:

DateTime.ToString("dd'/'MM'/'yyyy")

2
@spender - bazı kültürlerde öyleler.
Daniel A. White

Hızlı yanıtınız için teşekkürler. Haklısın. Size doğru cevabı vereceğim
Diskdrive

6
Ayrıca şu biçimi de kullanabilirsiniz: dateTime.ToString (@ "yyyy \ / MM \ / dd")
base2


2
Ters eğik çizgi kullanarak biçim dizesinden kaçış da işe yarar: DateTime.Now.ToString ("dd \\ / MM \\ / yyyy");
TomB

61

Geçiş CultureInfo.InvariantCulture o bile çok özel bir biçim, ne istediğini olarak dize döndürür, DateTime ikinci parametre olarak:

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

geri dönecek: 28 | 02 | 2014


Bu kod, kabul edilen cevaba göre daha açıktır (ekledi CultureInfo). Kesme işaretlerinden kaçan eğik çizgilerden en azından daha iyi görünüyor.
Sergey

2
Kaçış karakterlerini kullanmaktan kesinlikle okumak daha kolay. Tarih formatlarımın üzerine yazılacağını bilmediğim için biraz şaşırdım!
Savage

10

CultureInfo.InvariantCultureBağımsız değişken olarak ekle :

using System.Globalization;

...

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

Dönecek:

"16/08/2016"

geliştirici Mm ss vb. / 02 / Ay, 2017/01/02 / 2'de sona erecek
Okan SARICA

@OkanSARICA “/ Month” ile tarih eklemek istiyorsanız, bunun yerine ToString yönteminden sonra bunu yapmalısınız. DateTime.Now.ToString (”yyyy / AA / gg”, CultureInfo.InvariantCulture) + ”/ Ay”;
Mikael Engver

1

MVC, tablolar kullanıyorsanız, şöyle çalışır:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.