2012-01-26 12 views
5

ile göstermeye çalışırken "Giriş dizesi doğru formatta değil" hatası Saat dilimini, tek haneli saatlerde baştaki sıfırları olmadan, return string.Format("{0:h}", MyDateTimefield): "Giriş dizesi doğru biçimde değil" hatası alıyorum. Niye ya?Saat hizasını 'h'

return string.Format("{0:hh}", MyDateTimefield) çalışır. Doğru formatı aramak ve bir geçici çözüm değil. the pertinent docs itibaren

+0

'DateTime' türünde MyDateTimefield mi? Soruyorum, eğer öyle ise, muhtemelen sadece MyDateTimefield.ToString ("h"), " – pstrjds

+0

@pstrjds, aynı hatayı atar. –

+0

Bir geçici çözüm istemediğinizi biliyorum, ancak MyDateTimefield.Hour.ToString() çalışacaktır. –

cevap

14

: "h" biçim belirteci diğer özel biçim belirteçleri olmadan kullanılırsa

, standart bir tarih ve saat biçim belirteci olarak yorumlanır ve bir FormatException atar edilir. Tek bir biçim belirteci kullanmayla ilgili daha fazla bilgi için, bu konudaki daha sonra Using Single Custom Format Specifiers konusuna bakın. [...] önce veya şartname sonra bir boşluk bir biçim dizesi tek belirteç olarak özel tarih ve saat biçimi belirteçleri herhangi birini kullanmak için

: bu bağlantı takiben

sizi alır veya tek özel tarih ve saat belirtecinden önce yüzde ("%") biçim belirtecini ekleyin. h kullanarak this link itibaren

+1

+1 İyi bulmak, tek karakterli sorun hakkında bilmiyordum. – pstrjds

+0

İki farklı biçim dizesi hile sayfası kullandım ve tek biçim belirtecinden bahsetmediler. Teşekkürler! –

2

lider olmadan saat doğru biçimi olan 0. Çok ilginç .. Bütün çalışmıyor gibi görünüyor şu:

return string.Format("{0: h}", MyDateTimefield) 
return string.Format("{0:h }", MyDateTimefield) 
return string.Format("{0:h:m}", MyDateTimefield) 

Ama en kısa sürede return string.Format("{0:h}", MyDateTimefield) koymak gibi bir istisna atar .

Neden olduğu konusunda emin değilim. Bir boşluk ile tamam iseniz ilk 2 satır çalışmalıdır.

+0

Çalışmadığı için tek karakter biçimindeki dizeler, .NET özeldir ve yalnızca "standart biçim belirteçleri" olarak yorumlanır. – millimoose

+0

Sadece cevabınızı okuyun. Iyi bulmak. Aynı msdn sayfasını okuyordum ama bu bölümü tamamen atladım. – Lester