code: def datetime(
      year,  # type: int
      month,  # type: int
      day,  # type: int
      hour=0,  # type: int
      minute=0,  # type: int
      second=0,  # type: int
      microsecond=0,  # type: int
      tz=UTC,  # type: Union[str, _Timezone]
      dst_rule=POST_TRANSITION,  # type: str
  ):  # type: (...) -> DateTime
      
      if tz is not None:
          tz = _safe_timezone(tz)
  
      if not _HAS_FOLD:
          dt = naive(year, month, day, hour, minute, second, microsecond)
      else:
          dt = _datetime.datetime(year, month, day, hour, minute, second, microsecond)
      if tz is not None:
          dt = tz.convert(dt, dst_rule=dst_rule)
  
      return DateTime(
          dt.year,
          dt.month,
          dt.day,
          dt.hour,
          dt.minute,
          dt.second,
          dt.microsecond,
          tzinfo=dt.tzinfo,
          fold=dt.fold,
      )
docs: Creates a new DateTime instance from a specific date and time.