def dt_from_http_datetime_str(http_full_datetime):
    """Parse HTTP Full Date formats and return as datetime.

    Args:
      http_full_datetime : str
        Each of the allowed formats are supported:

        - Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
        - Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
        - Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format

        HTTP Full Dates are always in UTC.

    Returns:
      datetime
        The returned datetime is always timezone aware and in UTC.

    See Also:
      http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1

    """
    date_parts = list(email.utils.parsedate(http_full_datetime)[:6])
    year = date_parts[0]
    if year <= 99:
        year = year + 2000 if year < 50 else year + 1900
    return create_utc_datetime(year, *date_parts[1:])