diff --git a/AUTHORS b/AUTHORS
index 4b753f5..cf63531 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -256,6 +256,7 @@ answer newbie questions, and generally made Django that much better:
     Christopher Lenz <http://www.cmlenz.net/>
     lerouxb@gmail.com
     Piotr Lewandowski <django@icomputing.pl>
+    Justin Lilly <justinlilly@gmail.com>
     Waylan Limberg <waylan@gmail.com>
     limodou
     Philip Lindborg <philip.lindborg@gmail.com>
diff --git a/django/views/generic/date_based.py b/django/views/generic/date_based.py
index c5f1748..9150266 100644
--- a/django/views/generic/date_based.py
+++ b/django/views/generic/date_based.py
@@ -116,7 +116,7 @@ def archive_month(request, year, month, queryset, date_field,
     """
     if extra_context is None: extra_context = {}
     try:
-        date = datetime.date(*time.strptime(year+month, '%Y'+month_format)[:3])
+        date = datetime.date(*time.strptime("%s-%s" % (year, month), '%s-%s' % ('%Y', month_format))[:3])
     except ValueError:
         raise Http404
 
@@ -237,7 +237,7 @@ def archive_day(request, year, month, day, queryset, date_field,
     """
     if extra_context is None: extra_context = {}
     try:
-        date = datetime.date(*time.strptime(year+month+day, '%Y'+month_format+day_format)[:3])
+        date = datetime.date(*time.strptime("%s-%s-%s" % (year, month, day), '%s-%s-%s' % ('%Y', month_format, day_format))[:3])
     except ValueError:
         raise Http404
 
@@ -307,7 +307,7 @@ def object_detail(request, year, month, day, queryset, date_field,
     """
     if extra_context is None: extra_context = {}
     try:
-        date = datetime.date(*time.strptime(year+month+day, '%Y'+month_format+day_format)[:3])
+        date = datetime.date(*time.strptime('%s-%s-%s' % (year, month, day), '%s-%s-%s' % ('%Y', month_format, day_format))[:3])
     except ValueError:
         raise Http404
 
diff --git a/tests/regressiontests/views/tests/generic/date_based.py b/tests/regressiontests/views/tests/generic/date_based.py
index 3cb7e1e..abbbba9 100644
--- a/tests/regressiontests/views/tests/generic/date_based.py
+++ b/tests/regressiontests/views/tests/generic/date_based.py
@@ -90,3 +90,22 @@ class MonthArchiveTest(TestCase):
         response = self.client.get('/views/date_based/datefield/archive_month/2004/02/')
         self.assertEqual(response.status_code, 404)
 
+class DayMonthYearArchiveTest(TestCase):
+    " Fixes #7944 - Generic date based views get confused with numeric month format"
+    def setUp(self):
+        author = Author(name="John Smith")
+        author.save()
+
+        jan_double_day = datetime(2004, 1, 21, 0, 0, 1)
+
+        article = Article(title="example", author=author)
+
+        article.date_created = jan_double_day
+        article.save()
+
+    def tests_first_month(self):
+        foo = Article.objects.filter(date_created__year=2004, date_created__month=1, date_created__day=21)
+        self.assertEqual(len(foo), 1)
+
+        response = self.client.get('/views/date_based/archive_day/2004/1/21/')
+        self.assertEqual(response.status_code, 200)
diff --git a/tests/regressiontests/views/urls.py b/tests/regressiontests/views/urls.py
index 6403ab3..a6283c1 100644
--- a/tests/regressiontests/views/urls.py
+++ b/tests/regressiontests/views/urls.py
@@ -20,6 +20,8 @@ date_based_info_dict = {
     'date_field': 'date_created',
     'month_format': '%m',
 }
+numeric_days_info_dict = dict(date_based_info_dict, day_format='%d')
+
 date_based_datefield_info_dict = dict(date_based_info_dict, queryset=DateArticle.objects.all())
 
 urlpatterns = patterns('',
@@ -46,6 +48,9 @@ urlpatterns += patterns('django.views.generic.date_based',
     (r'^date_based/object_detail/(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/(?P<slug>[-\w]+)/allow_future/$',
         'object_detail',
         dict(allow_future=True, slug_field='slug', **date_based_info_dict)),
+    (r'^date_based/archive_day/(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/$',
+        'archive_day',
+        numeric_days_info_dict),
     (r'^date_based/archive_month/(?P<year>\d{4})/(?P<month>\d{1,2})/$',
         'archive_month',
         date_based_info_dict),
