'Takes two DateTime objects and returns a random datetime between the two
given datetimes.
Accepts DateTime objects.
:param datetime_start: DateTime
:param datetime_end: DateTime
:param tzinfo: timezone, instance of datetime.tzinfo subclass
:example DateTime(\'1999-02-02 11:42:52\')
:return DateTime'

@classmethod
def date_time_between_dates(cls, datetime_start=None, datetime_end=None, tzinfo=None):

    if (datetime_start is None):
        datetime_start = datetime.now(tzinfo)
    if (datetime_end is None):
        datetime_end = datetime.now(tzinfo)
    timestamp = random.randint(datetime_to_timestamp(datetime_start), datetime_to_timestamp(datetime_end))
    if (tzinfo is None):
        pick = datetime.fromtimestamp(timestamp, tzlocal())
        pick = pick.astimezone(tzutc()).replace(tzinfo=None)
    else:
        pick = datetime.fromtimestamp(timestamp, tzinfo)
    return pick
