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

将月份名称为C#DateTime的日期解析为

  •  5
  • iosdevnyc  · 技术社区  · 14 年前

    我想将以下日期格式解析为C#中的DateTime对象。

    "19 Aug 2010 17:48:35 GMT+00:00"
    

    1 回复  |  直到 11 年前
        1
  •  21
  •   Matt DeKrey Kiran    4 年前

    DateTime.ParseExact .

    DateTime.ParseExact(dateString, "dd MMM yyyy H:mm:ss \\G\\M\\Tzzz", System.Globalization.CultureInfo.InvariantCulture);
    

    如以下评论所示, System.Globalization.CultureInfo.CurrentCulture

        2
  •  -1
  •   Damian Vogel    4 年前

    public static DateTime ParseDate(string value)
    {
        DateTime date = new DateTime();
        if (value.Length <= 7) // 1.1.98, 21.3.98, 1.12.98, 
            DateTime.TryParseExact(value, "d.M.yy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeLocal, out date);
        else if (value.Length == 8 && value[5] == '.') // 21.01.98
            DateTime.TryParseExact(value, "dd.MM.yy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeLocal, out date);
        else if (value.Length <= 9) // 1.1.1998, 21.1.1998, 1.12.1998
            DateTime.TryParseExact(value, "d.M.yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeLocal, out date);
        else if (value.Length == 10) // 21.01.1998
            DateTime.TryParseExact(value, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeLocal, out date);
        return date;
    }
    
    public static DateTime? ExtractDate(string text)
    {
        DateTime? ret = null;
        Regex regex = new Regex(@"\d{1,2}\.\d{1,2}\.\d{2,4}");
        MatchCollection matches = regex.Matches(text);
        foreach (Match match in matches)
        {
            DateTime date = ParseDate(match.Value);
            if (ret == null || ret < date)
                ret = date;
        }
        return ret;
    }