2014-03-14 19 views
1

如果我的應用是在阿拉伯文化則DateTime.UtcNow爲我們提供了阿拉伯語clander日期時間像「13/05/1435 9時40分45秒ص」,但我需要它在zh-CN我的用戶曾經使用過什麼文化。獲取UTC日期時間在特定的文化獨立我當前UI文化

當我強制將這個日期轉換爲我們的文化時,它給了我一個錯誤。即使在像這樣的阿拉伯文化中,獲得en-US datetime的更好方法是什麼「14/03/2014 09:40:45 AM」

var us = DateTime.Now.ToString("dd/MM/yy HH:mm:ss tt", 
      new System.Globalization.CultureInfo("en-US")); 

      string st = us.ToString(); 

      DateTime ddt = Convert.ToDateTime(st, 
      new System.Globalization.CultureInfo("en-US")); 

當從ST中轉換爲DateTime同樣的en-US當應用程序在阿拉伯文化中扔了錯誤。 enter image description here

@先生提前lastr2d2

感謝。

+1

沒有, 'DateTime.UtcNow'給你一個'DateTime'。 'DateTime'不*有*任何格式。當您將其轉換爲**字符串**時,會應用文化。不要混淆**格式**,當你在字符串和DateTime之間進行轉換時,以及實際存儲的內容**。 –

+0

您不需要轉換爲「字符串」,然後立即嘗試將其轉換回「DateTime」。你爲什麼認爲你需要這樣做? –

回答

2

這是你例外嗎?

var ar = DateTime.Now.ToString("dd/MM/yy HH:mm:ss tt", 
      new System.Globalization.CultureInfo("ar-AE")); 
// 14/03/14 06:14:34 ص 
var us = DateTime.Now.ToString("dd/MM/yy HH:mm:ss tt", 
      new System.Globalization.CultureInfo("en-US")); 
// 14/03/14 06:14:44 AM 

- 編輯

,您可以通過DateTime.ParseExact得到DateTime實例:

var datetime = DateTime.ParseExact(us,"dd/MM/yy HH:mm:ss tt", 
      new System.Globalization.CultureInfo("en-US")); 
+0

我感謝你的幫助,真的很感謝你的迴應,但問題在於此。 string st = us.ToString(); DateTime ddt = Convert.ToDateTime(st, new System.Globalization。的CultureInfo( 「EN-US」)); 當我從字符串轉換爲dateTime再次它給錯誤,不可能在阿拉伯文化我在我的問題中添加快照。 –

+1

@syedAhsanJaffri我已經更新了我的答案。請檢查 – lastr2d2

+0

是的,我知道,但問題是,DateTime.ParseExact會轉換我知道,但日期時間將是「{13/05/35 12:46:05}}」 意味着阿拉伯語Clander日期,但我想en-US日期Formate in阿拉伯文化也像「14/03/2014 09:40:45 AM」 –

0

原因你得到一個例外,該字符串未被識別爲有效的DateTime是因爲您在格式化爲字符串時明確指定了格式,但在解析時沒有明確指定格式。 14/03/14是不明確的(哪一個是年份,哪一個是月份?),所以它不能解析。

有兩種選擇,(1)不明確聲明格式並允許在大多數情況下能夠解析的默認值,或(2)在解析時顯式聲明格式。

一般來說,解析日期非常困難,並且通過日期控件更好地處理來自用戶的日期。將日期解析爲交換(到存儲或網絡)的一部分是合法的,但在這種情況下應該由國際標準(ISO 8601)來管理,而不是語言特定的格式。

我想知道太多,如果該問題是,您想用公曆格式化,讓語言成爲應用程序的語言,但即便如此,這是一個不同的問題...