2013-10-28 70 views
0

我想知道如何將日期時間格式更改爲另一種格式。我的意思是,我得到的字符串,它將代表加入到類型化的數據表中的日期時間的值,但是我在添加的DataRow如何將日期時間格式更改爲另一個C#

dr[i] = value; 
dt.Rows.Add(dr); 

該字段的列設置像這樣的時刻得到了一個錯誤。

DataColumn dc = new DataColumn("CreateDate", typeof(System.DateTime)); 
dt.Columns.Add(dc); 

所以,我收到這個值「30-01-1984」和崩潰!所以。想象一下,我現在定義了2種日期時間格式。我想配置這種格式,告訴我的應用程序,我會收到這種格式「MM-dd-yyyy」並將其更改爲這種格式「yyyy-MM-dd」。所以我想將我的字符串值解析爲第一種格式,然後驗證我是否可以將其更改爲新格式。

感謝

+0

修復您的dbase表,*從不*將日期存儲爲字符串。 –

回答

3

既然你得到一個格式化字符串DateTime值,你必須分析它的.Net DateTime類型的對象,使用DateTime.ParseDateTime.ParseExact,(或DateTime.TryParse變種),如:

string yourStringDate = "30-01-1984"; 
DateTime dateTimeObj = DateTime.ParseExact(yourStringDate, 
            "d-M-yyyy", 
            CultureInfo.InvariantCulture)); 

(我已經使用單個dM這將工作的單個數字日和月)

稍後在你的DataTable中添加。像:

DataRow dr = dt.NewRow(); 
dr["CreateDate"] = dateTimeObj; 

我不知道你是如何找回日期爲字符串,如果要存儲DateTime在數據庫中的字符串,那麼它最好使用由數據庫提供的,而不是保持日期字符串,DateTime型。

+0

注意'd'或'M'將不會與單個數字的日期和月份匹配,如果它們不與分隔符分開 –

+0

事實上,我從字符串平面文件接收值,我將它作爲字符串分配到DT的相應列,但列已添加爲DateTime類型。我將把格式設置爲一個數據庫,告訴應用程序將其解釋爲定義的格式。我不明白你的答案,對不起 –

+0

@MaximusDecimus,你的'DataTable'列類型是'DateTime',它只接受'DateTime'的值,所以當你添加新行時,那麼「CreateDate」列將只接受' DateTime'類型的值,我也修改了我的答案以反映這一點,我希望現在清楚它現在清除 – Habib