代码之家  ›  专栏  ›  技术社区  ›  arielnmz

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

  •  7
  • arielnmz  · 技术社区  · 8 年前

    我正在尝试使用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    
    
    1 回复  |  直到 8 年前
        1
  •  14
  •   Mike G    8 年前

    这个 API documentation 指示您尝试的属性 ToString() 实际上是一个 System.Nullable<DateTime> ,其可用性考虑因素与普通的 DateTime 。为了调用 ToString 方法,您需要检索一个具体的 日期时间 从提供给您的可为null的值中构造结构-在您的情况下,通过执行以下操作:

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

    请注意,您通常会首先检查您的可空对象(例如。 evt.End.DateTime )通过检查 HasValue 调用前的属性 ToString() 或任何其他方法或属性。