错误“字符串未被识别为有效的日期时间”[重复]

2024-01-24

我有这两个字符串值:

  • Test1 = "2020-01-29T00:00:00Z"

  • Test2 = "29/01/2020 00:00:00"

我正在做这个比较:

(DateTime.ParseExact(Test2.ToString(), "dd/M/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture).ToString("yyyy'-'MM'-'dd'T'00':'00':'00'Z'") != (DateTime.ParseExact(Test1["ProjectDateSinged"].ToString(), "yyyy'-'MM'-'dd'T'00':'00':'00'Z'", CultureInfo.InvariantCulture)).ToString()))

但这会引发以下异常:

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

有人能发现我的代码有什么问题吗?


将我的评论扩展为答案,您应该稍微更新一下格式字符串。为了Test2你应该使用dd/MM/yyyy hh:mm:ss格式。

根据自定义日期和时间格式字符串 https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings MM用于月份编号01 to 12, M from 1 to 12。你有01月份数,所以MM应该使用。

您的日期中也没有 AM/PM 表示,因此tt也不需要

你将能够解析它们Test2进入日期。

var Test2 = "29/01/2020 00:00:00";
var result = DateTime.ParseExact(Test2, "dd/MM/yyyy hh:mm:ss", CultureInfo.InvariantCulture);

For the Test1您可以使用yyyy-MM-ddThh:mm:ssK(解析包括时区信息的日期)或yyyy-MM-ddThh:mm:ss'Z'没有时区信息。

要比较日期,您不需要将它们转换回字符串。您可以简单地使用获取日期组件Date https://learn.microsoft.com/en-us/dotnet/api/system.datetime.date?view=netframework-4.8的财产DateTime结构。下面的代码返回true

var result = DateTime.ParseExact(Test1, "yyyy-MM-ddThh:mm:ss'Z'", CultureInfo.InvariantCulture).Date ==
             DateTime.ParseExact(Test2, "dd/MM/yyyy hh:mm:ss", CultureInfo.InvariantCulture).Date;

除此之外,通过比较两个DateTime仅实例

var result = DateTime.ParseExact(Test1, "yyyy-MM-ddThh:mm:ss'Z'", CultureInfo.InvariantCulture) ==
             DateTime.ParseExact(Test2, "dd/MM/yyyy hh:mm:ss", CultureInfo.InvariantCulture);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误“字符串未被识别为有效的日期时间”[重复] 的相关文章

随机推荐