def _GetNumberOfSeconds(self, fat_date_time):
day_of_month = (fat_date_time & <NUM_LIT>)<EOL>month = ((fat_date_time >> <NUM_LIT:5>) & <NUM_LIT>)<EOL>year = (fat_date_time >> <NUM_LIT:9>) & <NUM_LIT><EOL>days_per_month = self._GetDaysPerMonth(year, month)<EOL>if day_of_month < <NUM_LIT:1> or day_of_month > days_per_month:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>number_of_days = self._GetDayOfYear(<NUM_LIT> + year, month, day_of_month)<EOL>number_of_days -= <NUM_LIT:1><EOL>for past_year in range(<NUM_LIT:0>, year):<EOL><INDENT>number_of_days += self._GetNumberOfDaysInYear(past_year)<EOL><DEDENT>fat_date_time >>= <NUM_LIT:16><EOL>seconds = (fat_date_time & <NUM_LIT>) * <NUM_LIT:2><EOL>minutes = (fat_date_time >> <NUM_LIT:5>) & <NUM_LIT><EOL>hours = (fat_date_time >> <NUM_LIT:11>) & <NUM_LIT><EOL>if hours not in range(<NUM_LIT:0>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if minutes not in range(<NUM_LIT:0>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>if seconds not in range(<NUM_LIT:0>, <NUM_LIT>):<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>number_of_seconds = (((hours * <NUM_LIT>) + minutes) * <NUM_LIT>) + seconds<EOL>number_of_seconds += number_of_days * definitions.SECONDS_PER_DAY<EOL>return number_of_seconds<EOL>
Retrieves the number of seconds from a FAT date time.

        Args:
          fat_date_time (int): FAT date time.

        Returns:
          int: number of seconds since January 1, 1980 00:00:00.

        Raises:
          ValueError: if the month, day of month, hours, minutes or seconds
              value is out of bounds.