2012-10-17 22 views
1

我正在開發一個應該從美國客戶使用的軟件。
在我的電腦(意大利):我用在不同文化中的分析日期

CultureInfo cultureUS = CultureInfo.GetCultureInfo("en-US"); 
DateTime dt = DateTime.Parse(s, cultureUS); 

,這可與像星期六,2012年9月8日的字符串。
但是,當我的軟件是客戶PC使用,他獲得誤差

字符串未被識別爲有效的DateTime

爲什麼?怎麼了?
我應該用什麼讓它在任何地方都能工作?

編輯:
只是爲了避免混淆:我讀那些種均來自網絡和文件的日期,我需要分析它們,然後用它們(在格式)寫一些其他的文件。
所以我想我不需要將它們轉換爲「標準」格式,然後再將它們轉換回來:我想從該格式中使用它們並將它們直接寫入文件中...
這就是因此,我決定用我寫的代碼....

+3

您的客戶輸入了什麼?你的用戶使用什麼語言環境?用戶是否更改了操作系統的任何區域設置? – Oded

+0

聽起來好像你正試圖解析一個使用不同文化產生的字符串,然後使用'en-US'解決方案是使用你將用來解析生成的字符串的相同特定文化來生成字符串。關於這個問題有幾十個問題。 –

+0

@Oded:我想這個字符串在每臺電腦上解析;這是我指定文化的原因......我應該用不同的方式嗎?順便說一句,該字符串應該被解析......這是正確的恕我直言...... – Marco

回答

0

你可能想看看DateTime.ParseExact

CultureInfo cultureInfo = CultureInfo.GetCultureInfo("en-US"); 
DateTime dateTime = DateTime.ParseExact(s, "D", cultureInfo); 

編輯

對於確切的時間日期格式,你可以嘗試:

DateTime dateTime = DateTime.ParseExact(s, "ddd, MMM dd, yyyy", cultureInfo); 
+2

這將無法解析'星期六,2012年9月8日'。至少提供正確的格式字符串。 – Oded

+3

完成。你想要一個甜甜圈和熱茶去正確的格式字符串? :) – tranceporter

+3

不需要那個音。如果您要提供代碼,請提供適用於OP的代碼。無論如何,「D」不能使用該格式(獲取FormatException)。 – Oded

0

我不習慣本地化但也許這可能爲你工作:

DateTime.Parse(date, new DateTimeFormatInfo() 
         { LongDatePattern = "ddd, MMM dd, YYYY" }); 

這似乎是爲我工作,因爲我已經在它在你的字符串格式拋出的字符串,但我沒有測試過不同的文化。