将字符串格式"yyyy-MM-ddTHH:mm:ss.fffZ"转换为日期时间

13

我知道这个问题已经以多种不同的方式被问过了,我已经看过所有的问题,但是没有一个解决方案似乎适用于我。因此,我希望也许你们能给我一些快速的帮助。

输入字符串是:"2000-01-01T12:00:000Z"。我需要将该输入字符串转换为DateTime,以便可以存储在数据库中。

我一直在使用ParseExact,但是我一直收到无法识别日期字符串异常。我错在哪里?

inValue.LatestDepartTime = "2000-01-01T12:00:000Z";
DateTime _latestDepartTime = DateTime.ParseExact(inValue.LatestDepartTime, "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture);
5个回答

9

使用yyyy-MM-dd'T'HH:mm:ss.fff'Z'

代码如下:

public DateTime convertIsoToDateTime (string iso)
{
    return DateTime.ParseExact(iso, "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", CultureInfo.InvariantCulture);
}

9

你的格式字符串需要完全匹配输入内容。

这包括字面上的TZ字符。


所以,我应该能够从原始字符串中解析出T和Z,这应该给出:2020-01-01 12:00:000。然后两个字符串将完全匹配。但是,我已经尝试过这样做,仍然得到相同的错误。值得注意的一点,也许这会有所帮助,在调试中我注意到_latestDepartTime每次都设置为1/1/0001 12:12:000 AM。 - CalvinBlount
你只是看到了一个 DateTime 的默认(空)值。 - SLaks
3
你应该使用参数,SQL Server 不需要知道或关心字符串格式化。 - SLaks
请问您能解释一下吗?当输入不符合有效的“DateTime”格式时,如何使用参数? - CalvinBlount
@CalvinBlount:将字符串解析为DateTime(此步骤与SQL无关),然后将DateTime值作为参数传递(此步骤与字符串无关)。 - SLaks
显示剩余2条评论

5

您需要在格式字符串中包含\\T\\Z以匹配字面值TZ


3

您需要在T和Z周围加上单引号:

DateTime parsedDateTime;
DateTime.TryParseExact(obj, "yyyy-MM-dd'T'HH:mm:ss'Z'", null, System.Globalization.DateTimeStyles.None, out parsedDateTime);
return parsedDateTime;

3

在模式中,您没有指定T

话虽如此,您可能想查看XmlConvert类,该类提供了转换此格式的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接