C# 如何将dd/MM/YYYY格式的字符串日期转换为YYYY-MM-dd-datetime?

C# 如何将dd/MM/YYYY格式的字符串日期转换为YYYY-MM-dd-datetime?,c#,date,datetime,C#,Date,Datetime,我想将dd/MM/YYYY格式化的字符串日期转换为YYYY-MM-dddatetime。但它又回到了我身上 “字符串未被识别为有效的日期时间。” 如何将“04/26/2016”字符串转换为yyyy-MM-dd日期时间格式 DateTime dt = DateTime.ParseExact("04/26/2016", "yyyy-MM-dd", CultureInfo.InvariantCulture); Console.WriteLine(dt); 显然,您的格式和字符串并不完全匹配。来自

我想将
dd/MM/YYYY
格式化的字符串日期转换为
YYYY-MM-dd
datetime。但它又回到了我身上

“字符串未被识别为有效的日期时间。”

如何将“04/26/2016”字符串转换为yyyy-MM-dd日期时间格式

 DateTime dt = DateTime.ParseExact("04/26/2016", "yyyy-MM-dd", CultureInfo.InvariantCulture);
 Console.WriteLine(dt);

显然,您的格式和字符串并不完全匹配。来自

将日期和时间的指定字符串表示形式转换为其 日期时间等价物字符串表示形式的格式必须为 精确匹配指定格式或引发异常

您应该改用
MM/dd/yyyy
格式

DateTime dt = DateTime.ParseExact("04/26/2016", "MM/dd/yyyy", CultureInfo.InvariantCulture);
如果您想用
yyyy-MM-dd
格式获得它的字符串表示,只需使用
ToString
方法

Console.WriteLine(dt.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));

请注意,没有
YYYY
作为自定义日期格式。因为这些说明符区分大小写,所以应该改用。

显然,格式和字符串不完全匹配。来自

将日期和时间的指定字符串表示形式转换为其 日期时间等价物字符串表示形式的格式必须为 精确匹配指定格式或引发异常

您应该改用
MM/dd/yyyy
格式

DateTime dt = DateTime.ParseExact("04/26/2016", "MM/dd/yyyy", CultureInfo.InvariantCulture);
如果您想用
yyyy-MM-dd
格式获得它的字符串表示,只需使用
ToString
方法

Console.WriteLine(dt.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));

请注意,没有
YYYY
作为自定义日期格式。因为这些说明符区分大小写,所以应该改用。

您用错误的方式解析带有日期的字符串。 你应该:

DateTime dt = DateTime.ParseExact("04/26/2016", "MM/dd/yyyy", CultureInfo.InvariantCulture);
Console.WriteLine(dt.ToString("yyyy-MM-dd"));

您以错误的方式解析带有日期的字符串。 你应该:

DateTime dt = DateTime.ParseExact("04/26/2016", "MM/dd/yyyy", CultureInfo.InvariantCulture);
Console.WriteLine(dt.ToString("yyyy-MM-dd"));
这样试试

DateTime dt = DateTime.ParseExact("04/26/2016", "MM/dd/yyyy", CultureInfo.InvariantCulture);
 Console.WriteLine(dt.ToString("yyyy-MM-dd"));
这样试试

DateTime dt = DateTime.ParseExact("04/26/2016", "MM/dd/yyyy", CultureInfo.InvariantCulture);
 Console.WriteLine(dt.ToString("yyyy-MM-dd"));

从技术上讲,您可以执行一些字符串操作:

但是,
DateTime.ParseExact
是一个更好的解决方案:

String result = DateTime
  .ParseExact(source, "MM/dd/yyyy", CultureInfo.InvariantCulture)
  .ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);  

从技术上讲,您可以执行一些字符串操作:

但是,
DateTime.ParseExact
是一个更好的解决方案:

String result = DateTime
  .ParseExact(source, "MM/dd/yyyy", CultureInfo.InvariantCulture)
  .ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);  

ParseExact(“2016年4月26日”、“yyyy-MM-dd”
ParseExact(“2016年4月26日”、“yyyy-MM-dd”)
您使用了错误的格式进行解析,没有带数字的月份26@PatrickHofman在第一次修订版中,它就像是
dd/MM/yyyy
,但由于OP对它的更改如此之快,我们并没有将它视为修订版,现在它是正常的。它是错误的,可能答案是错误的edited@SonerGönül谢谢。我看不太清楚。顺便说一句,我真的很喜欢使用
 InvariantCulture
ToString
方法中,因为OP的
CurrentCulture
可能不会将
GregorianCalendar
用作
Calendar
属性。在这种情况下,此
ToString
方法会生成与
2016-04-16
不同的结果。您使用了错误的格式进行解析,数字2没有月份6@PatrickHofman在第一次修订版中,它就像是
dd/MM/yyyy
,但由于OP对它的更改如此之快,我们并没有将它视为修订版,现在它是正常的。它是错误的,可能答案是错误的edited@SonerGönül谢谢。我看不太清楚。顺便说一句,我真的很喜欢在
ToString
方法中使用
InvariantCulture
,因为OP
CurrentCulture
可能不会将
Gregoriacalendar
用作
Calendar
属性。在这种情况下,此
ToString
方法生成的结果与
2016-04-16
不同。这完全是错误的。
-
不匹配。仅供参考,我真的喜欢使用
不变量Culture
ToString
方法中,因为OP的
CurrentCulture
可能不使用
GregoriaCalendar
作为
Calendar
属性。在这种情况下,此
ToString
方法生成的结果与
2016-04-16
不同。这完全是错误的。
-
不匹配。仅供参考,I非常喜欢在
ToString
方法中使用
InvariantCulture
,因为OP的
CurrentCulture
可能不会将
GregorianCalendar
用作
Calendar
属性。在这种情况下,此
ToString
方法生成的结果与
2016-04-16
不同。