这段代码给出了这个错误:
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");有谁知道为什么第一个代码不能工作,以及如何让它工作?
发布于 2014-09-07 23:36:08
您需要了解静态类型是如何工作的。在第一个示例中,n的类型是string。类型string确实有一个ToString()方法,但该方法要么不接受参数并返回相同的string对象,要么接受格式提供程序。由于您提供了一个参数,编译器假定您指的是第二个版本,但是类型不匹配。
也许您想要做的是首先将字符串转换为日期,这可以通过使用DateTime的Parse或TryParse方法解析它来实现:
var n = DateTime.Parse("9/7/2014 8:22:35 AM");在这里,我们将string转换为DateTime。n的类型为DateTime。
我认为在理解C#时不使用var可能是个好主意。如果您显式地列出了这些类型,您将更好地了解发生了什么,并且编译器会更早地标记错误。在这种情况下,您将在第一行得到错误,这将是显而易见的。它会抱怨将一个字符串分配给一个DateTime。关于IFormatProvider没有什么奇怪的东西,这一点一点也不明显。您的代码将如下所示:
DateTime n = "9/7/2014 8:22:35 AM";
string m = n.ToString("yyyy-MM-dd'T'HH:mm:ssZ");在本例中,您将在第一行得到一个错误,然后您可以清楚地看到,您正在尝试将类型为string的文字值(字符串"9/7/2014 8:22:35 AM")赋给类型为DateTime的变量,这是不能工作的。
发布于 2014-09-07 23:35:22
var n = "9/7/2014 8:22:35 AM";这将被视为字符串。你可以试着这样做
var n = DateTime.Parse("9/7/2014 8:22:35 AM");var n = DateTime.Now;这是一个DateTime对象
https://stackoverflow.com/questions/25711907
复制相似问题