2010-02-02 15 views
5

Zaman bölümünün meridiemini "A.M." olarak görüntülemek için DateTime.ToString() yöntemini kullanmanın bir yolu var mı? "AM" yerine? "T.t." maskesini kullanmayı denedim. ama bu sadece "A.A." çıktıDateTime.ToString(), meridiem'i "A.M." olarak görüntüler. veya "s."

+3

bu yeteneklerini maç için şartname değiştirmek için ne zaman neredeyse mükemmel bir örnek olduğunu düşünüyorum platform, platformun bir spesifikasyona uyması için uyguladığı uygulamadan ziyade. – tvanfosson

cevap

14

Sen CultureInfo.DateTimeFormat ait AMDesignator ve PMDesignator özelliklerini yeniden tanımlamak ve sonra bir biçim sağlayıcısı olarak kültür belirtebilirsiniz:

using System; 
using System.Globalization; 

class Program { 
    public static void Main() { 
     CultureInfo c = (CultureInfo)CultureInfo.CurrentCulture.Clone(); 
     c.DateTimeFormat.AMDesignator = "A.M."; 
     c.DateTimeFormat.PMDesignator = "P.M."; 
     Console.WriteLine(DateTime.Now.ToString("tt",c)); 
    } 
} 
+0

Güzel genel çözüm. Bu, kendini uluslararasılaşma için daha iyi bir hale getiriyor. – ladenedge

+0

Bunun bir tür ölü olduğunu anlıyorum, ama bu konu benim için bir gün daha düzeldi ve bu çözümü gerçekten çok beğendim. Kısa bir soruyla karşılaştım, eğer mevcut kültürün AM ve PM işaretleyicilerini değiştirdiysem (bir kopyasını oluşturmanın ve kopyayı kullanmanın aksine), sunucum yeniden başlatılıncaya ya da yalnızca Mevcut istek – Kyle

+0

@Kyle, Şu anda test edemiyorum ama klonlamadan şu anki kültürün özelliklerini değiştiremeyeceğinizi düşünüyorum ... bunu bir deneyin ve bana bildirin :) –

12

Kullanım "t.\\M":

DateTime time = DateTime.Now; 
string s = time.ToString("yyyy.MM.dd hh:mm:ss t.\\M."); 
Console.WriteLine(s); 

Çıktı:

2010.02.02 09:26:14 A.M. 

Açıklama: t AM/PM designator (yerelleştirilmiş designator DateTimeFormatInfo.AMDesignator ve DateTimeFormatInfo.PMDesignator de alınabilir) ilk karakteri verir. \\M, DateTime.ToString'un DateTime.ToString'un biçim dizesinin bir parçası olarak yorumlamadığı ve ayın sayısal değerini yazdıracağı şekilde M'dan çıkar.

Bunu yaptığınızda, açıkça kültüre duyarsız olduğunuza dikkat edin. Örneğin, Japonya'da, AM/PM işaretçisi, birinci değil, ikinci karakterlerde farklılık gösterir.

İlgili konular