代码之家  ›  专栏  ›  技术社区  ›  john Gu

当字符串具有不同的格式[重复]时,有没有方法将字符串解析为DateTime

  •  -2
  • john Gu  · 技术社区  · 7 年前

    但这些列有时包含秒数的数据时间,而有时不包含秒数。以下是日期字段的一些数据示例:-

    03/30/2016 10:55:49
    04/01/2016 11:02
    

    现在,当我尝试将上述字符串解析为日期时间时,如下所示:-

    formattedDateCreated = DateTime.ParseExact(fields[DateCreatedIndex], "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
    

    String was not recognized as a valid DateTime
    

    那么有谁能给我一些建议吗?如何使我的解析更具动态性,以处理有秒或无秒的日期格式?? 谢谢

    2 回复  |  直到 7 年前
        1
  •  3
  •   Tim Schmelter    7 年前

    您可以使用支持多种格式的重载:

    string[] formats = {"MM/dd/yyyy HH:mm:ss", "MM/dd/yyyy HH:mm" };
    DateTime formattedDateCreated = DateTime.ParseExact(fields[DateCreatedIndex], formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
    
        2
  •  2
  •   Xiaoy312    7 年前

    DateTime.ParseExact 也可以采用多种格式:

    var formats = new []
    {
        "MM/dd/yyyy HH:mm:ss",
        "MM/dd/yyyy HH:mm"
    };
    var dates = "03/30/2016 10:55:49;04/01/2016 11:02".Split(';')
        .Select(x => DateTime.ParseExact(x, formats, CultureInfo.InvariantCulture, DateTimeStyles.None));