def __init__(self, rfc2579_date_time_tuple=None):
super(RFC2579DateTime, self).__init__()<EOL>self._number_of_seconds = None<EOL>self._precision = definitions.PRECISION_100_MILLISECONDS<EOL>self.day_of_month = None<EOL>self.hours = None<EOL>self.deciseconds = None<EOL>self.minutes = None<EOL>self.month = None<EOL>self.seconds = None<EOL>self.year = None<EOL>if rfc2579_date_time_tuple:<EOL><INDENT>if len(rfc2579_date_time_tuple) < <NUM_LIT:10>:<EOL><INDENT>raise ValueError(<EOL>'<STR_LIT>')<EOL><DEDENT>if rfc2579_date_time_tuple[<NUM_LIT:0>] < <NUM_LIT:0> or rfc2579_date_time_tuple[<NUM_LIT:0>] > <NUM_LIT>:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if rfc2579_date_time_tuple[<NUM_LIT:1>] not in range(<NUM_LIT:1>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>days_per_month = self._GetDaysPerMonth(<EOL>rfc2579_date_time_tuple[<NUM_LIT:0>], rfc2579_date_time_tuple[<NUM_LIT:1>])<EOL>if (rfc2579_date_time_tuple[<NUM_LIT:2>] < <NUM_LIT:1> or<EOL>rfc2579_date_time_tuple[<NUM_LIT:2>] > days_per_month):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if rfc2579_date_time_tuple[<NUM_LIT:3>] not in range(<NUM_LIT:0>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if rfc2579_date_time_tuple[<NUM_LIT:4>] not in range(<NUM_LIT:0>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if rfc2579_date_time_tuple[<NUM_LIT:5>] not in range(<NUM_LIT:0>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if rfc2579_date_time_tuple[<NUM_LIT:6>] < <NUM_LIT:0> or rfc2579_date_time_tuple[<NUM_LIT:6>] > <NUM_LIT:9>:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if rfc2579_date_time_tuple[<NUM_LIT:7>] not in ('<STR_LIT:+>', '<STR_LIT:->'):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if rfc2579_date_time_tuple[<NUM_LIT:8>] not in range(<NUM_LIT:0>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if rfc2579_date_time_tuple[<NUM_LIT:9>] not in range(<NUM_LIT:0>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>time_zone_offset = (<EOL>(rfc2579_date_time_tuple[<NUM_LIT:8>] * <NUM_LIT>) + rfc2579_date_time_tuple[<NUM_LIT:9>])<EOL>if rfc2579_date_time_tuple[<NUM_LIT:7>] != '<STR_LIT:->':<EOL><INDENT>time_zone_offset = -time_zone_offset<EOL><DEDENT>self.year, self.month, self.day_of_month, self.hours, self.minutes = (<EOL>self._AdjustForTimeZoneOffset(<EOL>rfc2579_date_time_tuple[<NUM_LIT:0>], rfc2579_date_time_tuple[<NUM_LIT:1>],<EOL>rfc2579_date_time_tuple[<NUM_LIT:2>], rfc2579_date_time_tuple[<NUM_LIT:3>],<EOL>rfc2579_date_time_tuple[<NUM_LIT:4>], time_zone_offset))<EOL>self.deciseconds = rfc2579_date_time_tuple[<NUM_LIT:6>]<EOL>self.seconds = rfc2579_date_time_tuple[<NUM_LIT:5>]<EOL>self._number_of_seconds = self._GetNumberOfSecondsFromElements(<EOL>self.year, self.month, self.day_of_month, self.hours, self.minutes,<EOL>self.seconds)<EOL><DEDENT>
Initializes a RFC2579 date-time.

        Args:
          rfc2579_date_time_tuple:
              (Optional[tuple[int, int, int, int, int, int, int]]):
              RFC2579 date-time time, contains year, month, day of month, hours,
              minutes, seconds and deciseconds.

        Raises:
          ValueError: if the system time is invalid.