ToString的重载方法没有2个参数

时间:2016-05-16 02:23:15

标签: c# .net

我正在尝试使用ToString方法将日期时间格式化为表格" c"的字符串:

string end = evt.End.DateTime.ToString("c", DataController.culture);

DataController.culture是对有效文化对象的引用,evt是来自Google Calendar v3 API的Event对象。我确信DateTime属于DatetTime类,因为调试器在对象类型中这样说。

但是我一直在提到标题中提到的问题,为什么?即使MSDN docs显示如何使用该方法,但不知何故我不能:

Console.WriteLine(date1.ToString("d MMMM", 
                  CultureInfo.CreateSpecificCulture("es-MX")));
// Displays 29 agosto    

1 个答案:

答案 0 :(得分:5)

API documentation表示您尝试ToString()的属性实际上是System.Nullable<DateTime>,其与普通DateTime的可用性考虑因素不同。为了调用您希望的ToString方法,您需要从提供给您的可为空的结构中检索具体的DateTime结构 - 在您的情况下,通过执行以下操作:

string end = evt.End.DateTime.Value.ToString("c", DataController.culture);

请注意,您通常需要先通过在调用evt.End.DateTime之前检查HasValue属性或任何其他方法来检查您的可空对象(例如ToString())是否实际具有值或财产。