2010-08-24 98 views
2

任何想法? 我不能拿出任何。如何將整數日期轉換爲格式化日期字符串(即2012009至2009年2月1日)

我有日期,我從csv文件加載在列表和它們保存爲所有的整數,或者更確切地說,整數的字符串(即2009年1月1日= 1012009)如何

任何想法將1012009變成1/01/2009?

謝謝!

+0

注重前導零。 – thelost 2010-08-24 05:17:10

+1

那是'Mddyyyy'還是'dMMyyyy'? 1月1日並沒有多大幫助':'' – Kobi 2010-08-24 05:17:33

+0

格式是MMddyyyy和Mddyyyy。我將其他答案標記爲答案,因爲它對我最有效。這一個也可以工作。 – waskelton4 2010-08-25 15:01:18

回答

2
int date = 1012009; 

var month = date/1000000; 
var day = (date/10000) % 100; 
var year = date % 10000; 

var formatted = new DateTime(year, month, day).ToString(); 

這假定月 - 日 - 年;如果數字是日 - 月 - 年,我相信您可以交換月份和日期變量以適應此情況。

如果你想定製的日期格式,你可以做這樣描述:

+2

從csv(文本)中讀取並格式化爲不帶分隔符的日期時,我實際上不會將其視爲整數。我會直接從字符串中解析它。 – 2010-08-24 05:49:04

6

由於日期存儲爲一個字符串,您可能需要使用ParseExact

DateTime date = DateTime.ParseExact("28012009", "dMMyyyy", null); 

ParseExact如果格式不匹配,將會引發異常。它還有其他重載,如果需要,您可以指定多個可能的格式。請注意,這裏providernull,它使用當前的文化。
根據不同的風格,您可能需要使用TryParseExact

0

讓10102009成爲dateInt。

string dateString = dateInt.ToString(); 
int l = dateString.Length; 
dateString = dateString.Insert(l-3,"/"); 
dateString = dateString.Insert(l-6,"/"); 

你現在應該有2009年1月1日在dateString ..你也可以嘗試ParseExact功能..

+0

放棄「插入」的結果。 – Timwi 2010-08-24 06:36:05

+0

仍然不熱 - 'dateString'是一個'int','l'應該是一個'int'。首先運行代碼通常會更好,確保它能正常工作。 – Kobi 2010-08-24 07:06:05

相關問題