将字符串转换为日期格式

时间:2014-11-12 14:24:36

标签: c# string datetime

我想要一个字符串值来转换日期(yyyy-MM-dd)格式。 下面是我尝试的代码,但它给了我一个例外。

string date = "20141021";
DateTime myDate = DateTime.ParseExact(date ,"yyyy-MM-dd",
                                      CultureInfo.InvariantCulture);

正如您所看到的,DateTime期望我的字符串遵循"2014-10-21"模式。但是我无法修改我的字符串。是否可以将字符串日期"20141021"转换为yyyy-MM-dd格式?

6 个答案:

答案 0 :(得分:4)

如何将日期格式更改为字符串的实际格式? ParseExact要求您输入格式的完全表示。

因此,解决方案是将yyyy-MM-dd更改为yyyyMMdd

string date = "20141021";
DateTime myDate = DateTime.ParseExact(date, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);

答案 1 :(得分:2)

您需要将字符串解析为:

DateTime dt=DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);

答案 2 :(得分:1)

当您尝试格式化日期时间时,程序将查找" - "你做的字符串中的符号。

您可以使用" - "解决此问题。你的字符串中的符号(在我看来这是最好的解决方案)。 它看起来像这样:

 string date = "2014-10-21";

或者您可以删除" - "

的符号
DateTime.ParseExact(date ,"yyyy-MM-dd"

一部分。

所以它看起来像这样

string date = "20141021";
            DateTime myDate = DateTime.ParseExact(date ,"yyyyMMdd",
                                       System.Globalization.CultureInfo.InvariantCulture);

答案 3 :(得分:1)

您可以使用以下代码....

string date = "20141021";
    DateTime myDate = DateTime.ParseExact(date, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
    string finaldate = myDate.ToString("yyyy-MM-dd"); 

答案 4 :(得分:1)

我知道为时已晚,但自 OP 后,用户需要一些解释..

  

我想要一个字符串值来转换日期(yyyy-MM-dd)格式。下边是   我试过的代码,但它给了我一个例外。

是的,因为来自DateTime.ParseExact

  

将指定的日期和时间字符串表示形式转换为它   DateTime等效。 字符串表示的格式必须   完全匹配指定的格式或抛出异常

在你的情况下,他们不是。 20141021yyyy-MM-dd格式不同。它必须是yyyyMMdd格式,与您的字符串完全匹配。

  

正如你所看到的,DateTime希望我的字符串遵循" 2014-10-21"   图案。但是我无法修改我的字符串

但您始终可以将格式修改为yyyyMMdd

string date = "20141021";
DateTime myDate = DateTime.ParseExact(date,"yyyyMMdd",
                                      CultureInfo.InvariantCulture);
  

是否可以转换字符串日期:" 20141021"到yyyy-MM-dd   格式?

没有这样的字符串日期。有一个string并且有一个DateTime20141021stringyyyy-MM-dd字符串格式,您要将其字符串解析为DateTime

DateTime没有任何隐式格式。它只有日期和时间价值。 String的{​​{1}}表示可以包含格式。

答案 5 :(得分:0)

如果绝对需要将20141021格式化为2014-10-21,您可以执行以下操作:

string date = "20141021";
string year = date.Substring(0, 4);
string month = date.Substring(4, 2);
string day = date.Substring(6, 2);

string formatted = year + "-" + month + "-" + day;

DateTime myDate = DateTime.ParseExact(formatted,"yyyy-MM-dd",
                               System.Globalization.CultureInfo.InvariantCulture);

否则,上面提供的答案将为您提供您正在寻找的内容。