2011-06-01 22 views
25

Sistem tarih formatını almak için bir çözüm arıyorum.Sistem DateTime biçimi nasıl alınır?

Örneğin: DateTime.Now alırsam? Hangi Tarih Saat Formatı kullanılıyor? DD/MM/YYYY vb

+0

Belirli bir biçimde bir tarihçe almak ister misiniz? O zaman size yardım etmek istediğiniz formatı bilmeliyiz. –

+0

Sadece açık olmak gerekirse, DateTime.Now herhangi bir biçimde değil. Bu ikili bir sayıyı saflaştırır. – pm100

cevap

41

başka bir yerde değiştirilmemiştir, bu onu alacak:

string sysFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern; 

bir Win app kullanarak, ayrıca UICulture bakabiliriz:

string sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern; 

Not DateTimeFormat o bir okuma-yazma özelliğidir, yani değişebilir.

+3

'CultureInfo.CurrentCulture.DateTimeFormat; 'işlevi bir dize değeri döndürmez. Son çağrı, System short date formatını arıyorsanız dize sysDateFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern; olmalıdır. –

+0

@JoeAlmore - Yorum için teşekkürler. Cevap güncellendi. – Oded

1

System.DateTime.Now özelliği bir System.DateTime döndürür. Bu, çoğu programcının çoğu durumda düşünmeye gerek duymadığı bir ikili biçimde bellekte depolanır. Bir DateTime değeri görüntülediğinizde veya başka bir nedenden dolayı bir dizgeye dönüştürdüğünüzde, istediğiniz herhangi bir formatı belirten bir biçim dizgisine göre dönüştürülür.

Bu son anlamıyla, "DateTime.Now, hangi Tarih Saati Formatı kullanılıyor?" "herhangi bir DateTime formatı kullanmıyor, çünkü henüz biçimlendirmediniz".

ToString'in aşırı yüklenmesini veya (isteğe bağlı olarak) System.String.Format kullanırsanız, biçimi belirtebilirsiniz. Varsayılan bir biçim de vardır, bu nedenle her zaman biçimi belirtmeniz gerekmez. Varsayılan biçimi nasıl belirleyeceğinizi soruyorsanız, Oded'in cevabına bakmalısınız.

11

Yukarıdaki cevaplar tam olarak doğru değil.

Ana iş parçacığım ve UI iş parçacığımın "en-ABD" kültürüne (tasarıma göre) dahil edilmeye zorlandığı bir durum vardı. Benim Windows DateTime biçimi

string sysFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern; 
string sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern; 

"AA/gg/yyyy" döndü "gg/aa/yyyy", ama benim gerçek, Windows formatını almak istedim. Bunu yapabilmemin tek yolu, kukla bir iplik yaratmaktır.

System.Threading.Thread threadForCulture = new System.Threading.Thread(delegate(){}); 
string format = threadForCulture.CurrentCulture.DateTimeFormat.ShortDatePattern; 
İlgili konular