diff --git a/addons/website_event_exhibitor/models/event_sponsor.py b/addons/website_event_exhibitor/models/event_sponsor.py
index a2278f4298b79f3a7ccc49dd9eb358c946e3b8a5..cefbce94c92e2473ec11675e89c90155d9820e5b 100644
--- a/addons/website_event_exhibitor/models/event_sponsor.py
+++ b/addons/website_event_exhibitor/models/event_sponsor.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 # Part of Odoo. See LICENSE file for full copyright and licensing details.
 
-from datetime import datetime
+from datetime import datetime, timedelta
 from pytz import timezone, utc
 
 from odoo import api, fields, models, _
@@ -152,7 +152,7 @@ class Sponsor(models.Model):
         for sponsor in self:
             if not sponsor.event_id.is_ongoing:
                 sponsor.is_in_opening_hours = False
-            elif not sponsor.hour_from or not sponsor.hour_to:
+            elif sponsor.hour_from is False or sponsor.hour_to is False:
                 sponsor.is_in_opening_hours = True
             else:
                 event_tz = timezone(sponsor.event_id.date_tz)
@@ -165,6 +165,9 @@ class Sponsor(models.Model):
                 # compute opening hours
                 opening_from_tz = event_tz.localize(datetime.combine(now_tz.date(), float_to_time(sponsor.hour_from)))
                 opening_to_tz = event_tz.localize(datetime.combine(now_tz.date(), float_to_time(sponsor.hour_to)))
+                if sponsor.hour_to == 0:
+                    # when closing 'at midnight', we consider it's at midnight the next day
+                    opening_to_tz = opening_to_tz + timedelta(days=1)
 
                 opening_from = max([dt_begin, opening_from_tz])
                 opening_to = min([dt_end, opening_to_tz])
diff --git a/addons/website_event_exhibitor/tests/test_sponsor_internals.py b/addons/website_event_exhibitor/tests/test_sponsor_internals.py
index 8a84840042fb596ac3928d06fbb59358c6deafff..e7fd9492c7b42232b54f22f7dfecefaf7b99b815 100644
--- a/addons/website_event_exhibitor/tests/test_sponsor_internals.py
+++ b/addons/website_event_exhibitor/tests/test_sponsor_internals.py
@@ -31,7 +31,7 @@ class TestSponsorData(TestEventExhibitorCommon):
     @users('user_eventmanager')
     def test_event_date_computation(self):
         """ Test date computation. Pay attention that mocks returns UTC values, meaning
-        we have to take into account Europe/Brussels offset """
+        we have to take into account Europe/Brussels offset (+2 in July) """
         event = self.env['event.event'].browse(self.event_0.id)
         sponsor = self.env['event.sponsor'].browse(self.sponsor_0.id)
         event.invalidate_cache(fnames=['is_ongoing'])
@@ -85,3 +85,36 @@ class TestSponsorData(TestEventExhibitorCommon):
         sponsor.invalidate_cache(fnames=['is_in_opening_hours'])
         self.assertFalse(sponsor.is_in_opening_hours)
         self.assertFalse(event.is_ongoing)
+
+        # Use "00:00" as opening hours for sponsor -> should still work
+        event.invalidate_cache(fnames=['is_ongoing'])
+        sponsor.hour_from = 0.0  # 0 -> 18
+
+        # Inside opening hours (17 < 18)
+        self.mock_wevent_dt.now.return_value = datetime(2020, 7, 6, 15, 0, 1)
+        self.mock_wevent_exhib_dt.now.return_value = datetime(2020, 7, 6, 15, 0, 1)
+        sponsor.invalidate_cache(fnames=['is_in_opening_hours'])
+        self.assertTrue(sponsor.is_in_opening_hours)
+
+        # Outside opening hours (21 > 18)
+        self.mock_wevent_dt.now.return_value = datetime(2020, 7, 6, 19, 0, 1)
+        self.mock_wevent_exhib_dt.now.return_value = datetime(2020, 7, 6, 19, 0, 1)
+        sponsor.invalidate_cache(fnames=['is_in_opening_hours'])
+        self.assertFalse(sponsor.is_in_opening_hours)
+
+        # Use "00:00" as closing hours for sponsor -> should still work
+        # (considered 'at midnight the next day')
+        sponsor.hour_from = 10.0
+        sponsor.hour_to = 0.0
+
+        # Inside opening hours (11 > 10)
+        self.mock_wevent_dt.now.return_value = datetime(2020, 7, 6, 9, 0, 1)
+        self.mock_wevent_exhib_dt.now.return_value = datetime(2020, 7, 6, 9, 0, 1)
+        sponsor.invalidate_cache(fnames=['is_in_opening_hours'])
+        self.assertTrue(sponsor.is_in_opening_hours)
+
+        # Outside opening hours (7 < 10)
+        self.mock_wevent_dt.now.return_value = datetime(2020, 7, 6, 5, 0, 1)
+        self.mock_wevent_exhib_dt.now.return_value = datetime(2020, 7, 6, 5, 0, 1)
+        sponsor.invalidate_cache(fnames=['is_in_opening_hours'])
+        self.assertFalse(sponsor.is_in_opening_hours)