Fixed #10447 -- Made sure the syndication feeds helper function that returns RFC 2822-formatted datetime strings isn't affected by the current locale, removing use of strftime() because the '%a' and '%b' format specifiers are problematic in this respect. Thanks bear330 for the report and lupus for an initial patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15112 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
9b18b46c0f
commit
8219a13092
|
@ -29,15 +29,22 @@ from django.utils.xmlutils import SimplerXMLGenerator
|
||||||
from django.utils.encoding import force_unicode, iri_to_uri
|
from django.utils.encoding import force_unicode, iri_to_uri
|
||||||
|
|
||||||
def rfc2822_date(date):
|
def rfc2822_date(date):
|
||||||
|
# We can't use strftime() because it produces locale-dependant results, so
|
||||||
|
# we have to map english month and day names manually
|
||||||
|
months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',)
|
||||||
|
days = ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun')
|
||||||
|
|
||||||
# We do this ourselves to be timezone aware, email.Utils is not tz aware.
|
# We do this ourselves to be timezone aware, email.Utils is not tz aware.
|
||||||
|
dow = days[date.weekday()]
|
||||||
|
month = months[date.month - 1]
|
||||||
|
time_str = date.strftime('%s, %%d %s %%Y %%H:%%M:%%S ' % (dow, month))
|
||||||
if date.tzinfo:
|
if date.tzinfo:
|
||||||
time_str = date.strftime('%a, %d %b %Y %H:%M:%S ')
|
|
||||||
offset = date.tzinfo.utcoffset(date)
|
offset = date.tzinfo.utcoffset(date)
|
||||||
timezone = (offset.days * 24 * 60) + (offset.seconds / 60)
|
timezone = (offset.days * 24 * 60) + (offset.seconds / 60)
|
||||||
hour, minute = divmod(timezone, 60)
|
hour, minute = divmod(timezone, 60)
|
||||||
return time_str + "%+03d%02d" % (hour, minute)
|
return time_str + "%+03d%02d" % (hour, minute)
|
||||||
else:
|
else:
|
||||||
return date.strftime('%a, %d %b %Y %H:%M:%S -0000')
|
return time_str + '-0000'
|
||||||
|
|
||||||
def rfc3339_date(date):
|
def rfc3339_date(date):
|
||||||
if date.tzinfo:
|
if date.tzinfo:
|
||||||
|
|
Loading…
Reference in New Issue