gpt4 book ai didi

c# - 无法从 'string' 转换为 'System.IFormatProvider'

转载 作者:太空狗 更新时间:2023-10-29 17:32:00 26 4
gpt4 key购买 nike

这段代码给我这个错误:

var n = "9/7/2014 8:22:35 AM";
var m = n.ToString("yyyy-MM-dd'T'HH:mm:ssZ");

但这段代码可以正常工作,并以正确的格式返回日期。

var n = DateTime.Now;
var m = n.ToString("yyyy-MM-dd'T'HH:mm:ssZ");

有人知道为什么第一个代码不起作用以及如何让它起作用吗?

最佳答案

您需要了解静态类型的工作原理。在第一个中,n 的类型是stringstring 类型确实有一个 ToString() 方法,但该方法要么不接受任何参数并返回相同的字符串对象,要么接受一个格式提供程序。由于您提供了参数,编译器假定您指的是第二个版本,但类型不匹配。

也许您要做的是先将字符串转换为日期,这可以通过使用 DateTimeParseTryParse 对其进行解析来完成 方法:

var n = DateTime.Parse("9/7/2014 8:22:35 AM");

在这里,我们将 string 转换为 DateTimen 的类型是 DateTime

我认为在学习 C# 时使用 var 可能是个好主意。如果您显式列出类型,您将更好地了解正在发生的事情,并且编译器将更早地标记错误。在这种情况下,您会在第一行收到错误,而且很明显。它将提示将字符串分配给 DateTimeIFormatProvider 没有奇怪的东西,一点也不明显。您的代码将如下所示:

DateTime n = "9/7/2014 8:22:35 AM";
string m = n.ToString("yyyy-MM-dd'T'HH:mm:ssZ");

在这个例子中,你会在第一行得到一个错误,然后你可以清楚地看到你正在尝试分配一个文字值(字符串“9/7/2014 8:22:35 AM”)将 string 类型转换为 DateTime 类型的变量,这是行不通的。

关于c# - 无法从 'string' 转换为 'System.IFormatProvider',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25711907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com