我正在尝试使用ToString方法将日期时间格式化为格式为“c”的字符串:
string end = evt.End.DateTime.ToString("c", DataController.culture);
数据控制器。culture是对有效的culture对象的引用,而evt是来自GoogleCalendarv3API的Event对象。我确信DateTime是DateTime类,因为调试器在对象类型中这样说。
然而,我总是在标题中提到这个问题,为什么?甚至连 MSDN docs 演示如何使用该方法,但不知何故我不能:
Console.WriteLine(date1.ToString("d MMMM", CultureInfo.CreateSpecificCulture("es-MX"))); // Displays 29 agosto
这个 API documentation 指示您尝试的属性 ToString() 实际上是一个 System.Nullable<DateTime> ,其可用性考虑因素与普通的 DateTime 。为了调用 ToString 方法,您需要检索一个具体的 日期时间 从提供给您的可为null的值中构造结构-在您的情况下,通过执行以下操作:
ToString()
System.Nullable<DateTime>
DateTime
ToString
日期时间
string end = evt.End.DateTime.Value.ToString("c", DataController.culture);
请注意,您通常会首先检查您的可空对象(例如。 evt.End.DateTime )通过检查 HasValue 调用前的属性 ToString() 或任何其他方法或属性。
evt.End.DateTime
HasValue