2013-04-28 57 views
0

我有一個通過系統(從數據庫)輸入的日期爲dd/mm/yy我需要以編程方式將日期轉換爲en-US格式爲mm/dd/yyyy以便我可以在代碼中進行一些日期計算。我到目前爲止的代碼是:C#從歐洲時間到歐洲時間的轉換時間到en-US計算日期所需時間

String myJames = "25/04/13" // Date String comes in as non-US date 

String myJames2 = System.DateTime.Today.ToString(myJames); // I think the problem is here 

DateTime d1 = Convert.ToDateTime(myJames2); 
DateTime d2 = DateTime.Now; 

TimeSpan t = d2 - d1; 
double NrOfDays = t.TotalDays; 

我知道這不完全正確,尤其是在前幾行。任何幫助將日期轉換爲一種en-US格式以進行有效比較將不勝感激。

+0

對不起,但示例沒有意義 - 您傳遞「25/01/13」作爲DateTime.ToString調用的格式規範...不知道您期望的結果。 – 2013-04-28 19:15:56

+0

實際上,來自數據庫的值具有這種格式。我只是簡單地列出了它的方式 – Jason 2013-04-28 19:18:47

回答

2

只是爲了檢查我理解你的問題。你有一個字符串的日期,你想將該字符串轉換爲日期時間,以便您可以在計算中使用它?而你的問題是,該字符串不是運行代碼的區域設置使用的格式?

在這種情況下使用DateTime.ParseExact。

DateTime d1 = DateTime.ParseExact(myJames,"dd/MM/yy"); 

這行代碼將替換您的行聲明和分配d1。分配給myJames2的行可以被刪除,因爲它不是必需的。

+0

是的,你對問題的理解是正確的。 – Jason 2013-04-28 19:21:21

1

每次你從一個字符串轉換到一個字符串時,都會涉及到文化設置。

因此..如果您要將日期時間轉換爲字符串,並且您的文化是en-US,它將自動轉換爲:MM/dd/YYYY。

轉換回來也是如此。如果將字符串轉換回DateTime,則使用文化設置來查看字符串所處的格式。

Teh文化設置始終爲:Thread.CurrentThread.CurrentCulture。

大多數轉換功能允許覆蓋格式(如「MM/dd/yyyy」)和/或文化。所以你可以創建自己的文化,並在轉換過程中使用它。

你說數據庫使用dd/MM/yy,但通常數據庫中的DateTime沒有格式化,它只是一個二進制值。或者它存儲爲文本?如果它以文本形式存儲,則應始終使用正確的區域性或格式將其轉換爲DateTime。

相關問題