- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这段代码给我这个错误:
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
的类型是string
。 string
类型确实有一个 ToString()
方法,但该方法要么不接受任何参数并返回相同的字符串对象,要么接受一个格式提供程序。由于您提供了参数,编译器假定您指的是第二个版本,但类型不匹配。
也许您要做的是先将字符串转换为日期,这可以通过使用 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");
在这个例子中,你会在第一行得到一个错误,然后你可以清楚地看到你正在尝试分配一个文字值(字符串“9/7/2014 8:22:35 AM”)将 string
类型转换为 DateTime
类型的变量,这是行不通的。
关于c# - 无法从 'string' 转换为 'System.IFormatProvider',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25711907/
如果我们使用 ParseExact 方法对使用指定格式的exact 日期时间进行解析,为什么我们需要提供一个IFormatProvider 对象?它背后的意义是什么? 例如: DateTime.Par
我的对象中有一个整数值。我需要将其转换为整数值。所以我就这样做了。System.Convert.ToInt64(对象)但FxCop说我需要提供IFormatProvider。字符串数据类型我对提供 I
我在玩 Datetime.ParseExact 方法,它需要一个 IFormatProvider... 它可以输入 null,但它到底做了什么? 最佳答案 除了 Ian Boyd 的回答: Cultu
我尝试在我们产品的几个程序集上运行 FxCop,我得到了很多“指定 IFormatProvider”规则的匹配项。 碰巧,其中一些是合法的,但它也匹配这样的代码: Logger.DebugFormat
我正在使用为我指定的区域性将字符串转换为值作为 IFormatProvider。 我想弄清楚他们给我的是哪种文化。 我意识到 IFormatProvider 不一定必须对应于 System.Globa
var numberFormat = new NumberFormatInfo(); numberFormat.NumberDecimalSeparator = "."; numberFormat.N
我在从 double 到 string 的转换时遇到问题。 我要转换: double value: 0.0772486324655191 string value: 0.077248632465519
我正在尝试创建一个具有以下签名的字符串扩展方法: public static DateTime? TryParseExact(this string src, string format, IForm
如何将 IFormatProvider 传递给 StreamWriter? 特别是我想创建一个 new StreamWriter("myfile.txt", CultureInfo.Invariant
例如,当将 decimal 转换为 string 时,您使用 CultureInfo.InvariantCulture 并将其作为 IFormatProvider。但为什么这个重载不在 object
我正在尝试使用 IFormatProvider 来自定义一些数据绑定(bind);但是,永远不会调用 IFormatProvider 类。我在我的自定义格式类中的两个函数的开头都放置了断点,并且都没有
如果我错了,请有人纠正我,但是在 C# 中解析 yyyy/MM/dd(或其他特定格式)日期应该就像一样简单 DateTime.ParseExact(theDate, "yyyy/MM/dd"); 但是
我试图创建一个 IFormatProvider 实现来识别 DateTime 对象的自定义格式字符串。这是我的实现: public class MyDateFormatProvider : IFor
在 Convert 类中进行以下重载对我来说是有意义的 public static double ToDouble(string value, IFormatProvider provider); 示
为什么我们要在DateTime.ParseExact中使用IFormatProvider,如果已经有一个格式参数? DateTime.ParseExact(inputString, format, c
这段代码给我这个错误: var n = "9/7/2014 8:22:35 AM"; var m = n.ToString("yyyy-MM-dd'T'HH:mm:ssZ"); 但这段代码可以正常工作
在 ParseExact 方法的第一次重载中 public static DateTime ParseExact (string s, string format, IFormatProvider p
在 DateTime 格式字符串中有没有办法只包含月份的第一个字母? new DateTime(2015, 1, 12).ToString("M-dd-yy") // "1-12-15", but
IFormattable、IFormatProvider和ICustomFormatter有什么区别和联系,什么时候用?一个简单的实现示例也会非常好。 我并不是说什么时候在 .net 框架中使用它,而
如果您在字节上调用 ToString 以将其转换为 2 位十六进制值,是否以任何方式使用 CultureInfo.CurrentCulture 或 CultureInfo.InvariantCultu
我是一名优秀的程序员,十分优秀!