def __init__(self, system_time_tuple=None):
super(Systemtime, self).__init__()<EOL>self._number_of_seconds = None<EOL>self._precision = definitions.PRECISION_1_MILLISECOND<EOL>self.day_of_month = None<EOL>self.day_of_week = None<EOL>self.hours = None<EOL>self.milliseconds = None<EOL>self.minutes = None<EOL>self.month = None<EOL>self.seconds = None<EOL>self.year = None<EOL>if system_time_tuple:<EOL><INDENT>if len(system_time_tuple) < <NUM_LIT:8>:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if system_time_tuple[<NUM_LIT:0>] < <NUM_LIT> or system_time_tuple[<NUM_LIT:0>] > <NUM_LIT>:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if system_time_tuple[<NUM_LIT:1>] not in range(<NUM_LIT:1>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if system_time_tuple[<NUM_LIT:2>] not in range(<NUM_LIT:0>, <NUM_LIT:7>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>days_per_month = self._GetDaysPerMonth(<EOL>system_time_tuple[<NUM_LIT:0>], system_time_tuple[<NUM_LIT:1>])<EOL>if system_time_tuple[<NUM_LIT:3>] < <NUM_LIT:1> or system_time_tuple[<NUM_LIT:3>] > days_per_month:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if system_time_tuple[<NUM_LIT:4>] not in range(<NUM_LIT:0>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if system_time_tuple[<NUM_LIT:5>] not in range(<NUM_LIT:0>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if system_time_tuple[<NUM_LIT:6>] not in range(<NUM_LIT:0>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if system_time_tuple[<NUM_LIT:7>] < <NUM_LIT:0> or system_time_tuple[<NUM_LIT:7>] > <NUM_LIT>:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>self.day_of_month = system_time_tuple[<NUM_LIT:3>]<EOL>self.day_of_week = system_time_tuple[<NUM_LIT:2>]<EOL>self.hours = system_time_tuple[<NUM_LIT:4>]<EOL>self.milliseconds = system_time_tuple[<NUM_LIT:7>]<EOL>self.minutes = system_time_tuple[<NUM_LIT:5>]<EOL>self.month = system_time_tuple[<NUM_LIT:1>]<EOL>self.seconds = system_time_tuple[<NUM_LIT:6>]<EOL>self.year = system_time_tuple[<NUM_LIT:0>]<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 SYSTEMTIME structure.

        Args:
          system_time_tuple
              (Optional[tuple[int, int, int, int, int, int, int, int]]):
              system time, contains year, month, day of week, day of month,
              hours, minutes, seconds and milliseconds.

        Raises:
          ValueError: if the system time is invalid.