2012-02-13 58 views
1

此代碼有什麼問題?在winform C中更改DATETIME屬性的格式#

Client c = new Client(); 
string format = "yyyy/MM/dd HH:mm:ss"; 
string dateAdded = now.ToString(format); 
c.RegistrationDate = DateTime.Parse(dateAdded); 

c.RegistrationDate是在客戶端類DateTime對象,我希望它插入到我的數據庫。

但是它不會再用的日期轉換爲在我的MySQL數據庫的格式。它總是說字符串格式不正確。我做錯了什麼?我應該將我的註冊日期轉換爲字符串嗎?謝謝

**編輯:抱歉,我忘了提及。 「now」是now = DateTime.Now;它獲取日期和時間的當前時間。

+0

什麼類型是你的'now'變量?如果它是一個'DateTime',那麼爲什麼要將它轉換爲一個'string',然後返回到'DateTime'中,並使用'DateTime.Parse()'? – 2012-02-13 23:24:12

+0

因爲我想轉換它的格式,所以我想我應該先將它轉換爲一個字符串來改變它的格式並改變它的類型^^。但我失敗了...... – 2012-02-13 23:39:51

+0

正如Jon Skeet已經指出的那樣,'DateTime'不具有*格式,它只是一個值。如果你想要一個格式化的字符串,那麼你需要一個「字符串」,而不是「DateTime」,所以你根本不需要'DateTime.Parse()'。 – 2012-02-14 07:00:13

回答

3

一個DateTime犯規的格式 - 它只是日期/時間。 (無論是本地時間,UTC或什麼是另一回事,請注意。)

首先,你不應該轉換爲從文字像你:這只是一個麻煩的食譜。只需使用:

c.RegistrationDate = now; 

...進行任何四捨五入需要。

您還沒有表現出你是如何試圖插入值到你的數據庫。如果您直接在SQL語句中包含值,那就可以解釋它。您應該使用參數化SQL語句並直接在參數中傳遞值 - 不需要進行任何轉換。

如果你已經這樣做,請告訴我們您正在嘗試使用插入數據的代碼,我們將看到我們能做些什麼。有關示例,請參閱documentation

+0

謝謝你回答先生。但是,如果我嘗試使用它,我發送到我的數據庫的格式與我的數據庫中的格式不匹配。它給了我一個錯誤。 T_T我也有一個登錄日期在我的數據庫這是一個日期時間格式,但它的格式是yyyy/MM/dd。 xD – 2012-02-13 23:43:12

+0

@rjtubera:如果它確實是數據庫中的日期/時間字段,則不需要關心格式。如果你使用參數,這應該是絕對好的 - 如果這給你一個錯誤,那麼*說錯誤是什麼*。如果您不提供信息,我們無法幫助您。 – 2012-02-13 23:48:23

+0

它給了我一個「不正確的日期時間值:'2/14/2012 8:10:35 AM'列'dateAdded'在第1行」2012年2月14日(日/月/年)是我發送到數據庫,但數據庫需要的是(年/月/日)格式。 – 2012-02-14 00:13:30

0

我不認爲這有什麼不對的C#代碼,但我認爲你必須做

string dateAdded = DateTime.Now.ToString(format); 

,否則我不知道「現在」的。

0

您可能有文化問題。這裏提到您可以嘗試使用ParseExact:

http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

因爲解析(String)方法嘗試用 當前區域性的格式設置規則來分析日期和時間的字符串 表示,試圖在不同的 文化中解析特定的字符串可能會失敗或返回不同的結果。如果一個特定的 的日期和時間的格式將跨不同的區域進行解析,使用 DateTime.Parse(字符串,的IFormatProvider)方法或過載ParseExact方法的 之一,並提供一個格式說明。