24 lines
711 B
Python
24 lines
711 B
Python
from datetime import date, datetime
|
|
|
|
import jdatetime
|
|
from django.utils import timezone
|
|
|
|
def to_jalali(value):
|
|
if not value:
|
|
return None
|
|
|
|
# Keep already-converted Jalali values untouched.
|
|
if isinstance(value, (jdatetime.datetime, jdatetime.date)):
|
|
return value
|
|
|
|
if isinstance(value, datetime):
|
|
if timezone.is_naive(value):
|
|
value = timezone.make_aware(value, timezone.get_current_timezone())
|
|
value = timezone.localtime(value)
|
|
return jdatetime.datetime.fromgregorian(datetime=value)
|
|
|
|
if isinstance(value, date):
|
|
return jdatetime.date.fromgregorian(date=value)
|
|
|
|
raise TypeError(f"Unsupported type for to_jalali: {type(value)!r}")
|