将YYYYMMDD字符串转换为MM / DD / YYYY字符串

时间:2012-08-07 14:25:31

标签: c# datetime

我有一个以YYYYDDMM格式存储为字符串的日期。我想以'MM / DD / YYYY'格式显示该值。我用c#编程。我使用的当前代码如下:

txtOC31.Text = dr["OC31"].ToString().Trim();
strOC31date = dr["OC31DATE"].ToString().Trim();
DateTime date31 = DateTime.Parse(strOC31date);
strOC31date = String.Format("{0:MM/dd/yyyy}", date31);

但是,我收到错误,因为YYYYMMDD字符串(strOC31date)未被识别为有效的日期时间。

4 个答案:

答案 0 :(得分:17)

DateTime.ParseExact,带有示例

string res = "20120708";
DateTime d = DateTime.ParseExact(res, "yyyyddMM", CultureInfo.InvariantCulture);
Console.WriteLine(d.ToString("MM/dd/yyyy"));

答案 1 :(得分:11)

当您尝试解析的字符串不是标准格式之一时,请使用ParseExact()MSDN)。这将允许您解析自定义格式并且效率稍高(我在博客文章here中对它们进行比较)。

DateTime date31 = DateTime.ParseExact(strOC31date, "yyyyMMdd", null);

为格式提供程序传递null默认为DateTimeFormatInfo.CurrentInfo并且是安全的,但您可能希望使用不变文化:

DateTime date31 = DateTime.ParseExact(strOC31date, "yyyyMMdd", DateTimeFormatInfo.InvariantInfo);

然后你的代码就可以了。

答案 2 :(得分:3)

而不是DateTime.Parse(strOC31date);使用DateTime.ParseExact()方法,它将格式作为参数之一。

答案 3 :(得分:3)

您需要方法DateTime.ParseExact

DateTime date31 = DateTime.ParseExact(strOC31date, "yyyyddMM", CultureInfo.InvariantCulture);