将字符串转换为日期格式

本文关键字:日期 格式 转换 字符串 | 更新日期: 2023-09-27 18:30:05

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

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

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

将字符串转换为日期格式

将日期格式更改为字符串的实际格式怎么样? ParseExact要求精确表示您输入的格式。

所以解决方案是将yyyy-MM-dd更改为 yyyyMMdd .

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

字符串解析为:

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

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

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

 string date = "2014-10-21";

或者您可以删除

DateTime.ParseExact(date ,"yyyy-MM-dd"

.part。

所以它会看起来像这样

string date = "20141021";
            DateTime myDate = DateTime.ParseExact(date ,"yyyyMMdd",
                                       System.Globalization.CultureInfo.InvariantCulture);
您可以使用

以下代码....

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

时已晚,但由于OP,用户想要一些解释。

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

是的,因为从DateTime.ParseExact

将日期和时间的指定字符串表示形式转换为其 日期时间等效。字符串表示形式的格式必须 完全匹配指定的格式,否则将引发异常

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

如您所见,DateTime 希望我的字符串遵循"2014-10-21" 模式。但我无法修改我的字符串

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

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

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

没有这样的字符串日期。有string,有DateTime. 20141021 是一种stringyyyy-MM-dd是一种字符串格式,您希望使用它解析字符串以DateTime

DateTime没有任何隐式格式。它只有日期和时间值。 DateTimeString表示形式可以具有格式。

如果绝对需要将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);

否则,上面提供的答案将为您提供所需的内容。