2010-04-21 14 views
6

Ben bir dizeC# DateTime, bu yöntem bölgesel ayar güvenli midir?

private const string DateFormatString = "dd.MM.yyyy HH:mm:ss"; 
string LastsuccessfuldownloadDateTime = DateTime.Now.AddDays(-91).ToString(DateFormatString); 

Bu dize bu biçimde tefrika alır sağlamak için güvenli yolu var mı olarak bir tarih getirilmeye aşağıdaki yöntemi kullanıyorum?

Tek bir sunucuda güncelleştirme Bunu tamamen alanların yanlış çalışmasını sağladım.

cevap

9

Beklenmeyen herhangi bir yakalamadan kaçınmak için seri hale getirme için açık değişmezi kullanırdım. UTC'ye ihtiyacınız olup olmadığını da düşünmek isteyebilirsiniz; örneğin:

string LastsuccessfuldownloadDateTime = DateTime.UtcNow.AddDays(-91).ToString(
    DateFormatString, CultureInfo.InvariantCulture); 
+0

Anlaşıldı. Her ne kadar bu format * güvenli olmalı, açık bir şekilde 'InvariantCulture' kullanıldığında her zaman iyi bir fikirdir. – Thorarin

+2

+1. Kendinize bir iyilik yapın ve UtcNow'u kullanın. Zamanın gerçekte ne anlama geldiğinden daima emin olabilirsiniz ve sisteme, datetime serileştirirken olduğu gibi yapılandırıldığından emin olamazsınız. – ntziolis

+0

@Marc, şu anda yeni test çalıştırdığın için teşekkürler ... –

0

Senin farklı bölgesel ayar bilgisayarda her şey sorunsuz çalışır bölgesel setting.Then göre programın kültürünü değiştirmek gerektiğini düşünüyorum. Örneğin, bölgesel ayarınız ABD’ye göre ayarlanmışsa ve uk ayarı ile programınızı makinede çalıştırmak istiyorsanız,

.

Sonra ABD'ye

Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-us") programınızın CurrentCulture değiştirmek;

İlgili konular