这段代码给了我这个错误:
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
is string
。方式string
确实有一个ToString()
方法,但该方法要么不带参数并返回相同的字符串对象,要么需要格式提供程序。由于您提供了参数,编译器假定您指的是第二个版本,但类型不匹配。
也许您想要做的就是首先将字符串转换为日期,这可以通过使用解析它来完成DateTime
's Parse
or TryParse
方法:
var n = DateTime.Parse("9/7/2014 8:22:35 AM");
在这里,我们转换一个string
to DateTime
。的类型n
is DateTime
.
我认为这可能是个好主意not to use var
当你正在研究 C# 的时候。如果您明确列出类型,您将更好地了解正在发生的情况,并且编译器将更早地标记错误。在这种情况下,您将在第一行收到错误,而且这一错误很明显。它会抱怨将字符串分配给DateTime
。没有什么奇怪的事情IFormatProvider
,这根本不明显。你的代码看起来像这样:
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
,这是行不通的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)