timezone.py 795 B

12345678910111213141516171819202122
  1. import datetime
  2. from django.utils import timezone
  3. def to_date(value):
  4. """
  5. Function which knows how to convert timezone-aware :py:class:`~datetime.datetime` objects to
  6. :py:class:`~datetime.date` objects, according to guidelines from `Django documentation`_.
  7. .. _Django documentation: https://docs.djangoproject.com/en/dev/topics/i18n/timezones/#troubleshooting
  8. """
  9. assert isinstance(value, (datetime.date, datetime.datetime))
  10. if isinstance(value, datetime.date) and not isinstance(value, datetime.datetime):
  11. return value
  12. if timezone.is_aware(value) and timezone.pytz:
  13. current_timezone = timezone.get_current_timezone()
  14. return current_timezone.normalize(value.astimezone(current_timezone)).date()
  15. else:
  16. return value.date()