2010-08-24 58 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

相关问题