Esempio n. 1
0
 def string_to_date_with_xls_validation(cls, date_str):
     date_obj = datetime.strptime(date_str, '%Y-%m-%d').date()
     try:
         # SharedDate().datetime_to_julian(date_obj)
         # Copy code from v2.0.5. Could not find where SharedDate is in
         # latest version of openpyxl (and if it's useful)
         if isinstance(date_obj, datetime):
             to_excel(date_obj)
         elif isinstance(date_obj, date):
             to_excel(date_obj)
         elif isinstance(date_obj, time):
             time_to_days(date_obj)
         elif isinstance(date_obj, timedelta):
             timedelta_to_days(date_obj)
     except ValueError:
         return date_str
     else:
         return date_obj
Esempio n. 2
0
 def _cast_datetime(self, value):
     """Convert Python datetime to Excel and set formatting"""
     if isinstance(value, datetime.datetime):
         value = to_excel(value, self.base_date)
         self.number_format = numbers.FORMAT_DATE_DATETIME
     elif isinstance(value, datetime.date):
         value = to_excel(value, self.base_date)
         self.number_format = numbers.FORMAT_DATE_YYYYMMDD2
     elif isinstance(value, datetime.time):
         value = time_to_days(value)
         self.number_format = numbers.FORMAT_DATE_TIME6
     elif isinstance(value, datetime.timedelta):
         value = timedelta_to_days(value)
         self.number_format = numbers.FORMAT_DATE_TIMEDELTA
     return value
Esempio n. 3
0
 def _cast_datetime(self, value):
     """Convert Python datetime to Excel and set formatting"""
     if isinstance(value, datetime.datetime):
         value = to_excel(value, self.base_date)
         self.number_format = numbers.FORMAT_DATE_DATETIME
     elif isinstance(value, datetime.date):
         value = to_excel(value, self.base_date)
         self.number_format = numbers.FORMAT_DATE_YYYYMMDD2
     elif isinstance(value, datetime.time):
         value = time_to_days(value)
         self.number_format = numbers.FORMAT_DATE_TIME6
     elif isinstance(value, datetime.timedelta):
         value = timedelta_to_days(value)
         self.number_format = numbers.FORMAT_DATE_TIMEDELTA
     return value
Esempio n. 4
0
 def _cast_time(self, value):
     """Explicitly convert a string to a number and format as datetime or
     time"""
     match = TIME_REGEX.match(value)
     if match:
         if match.group("microsecond") is not None:
             value = value[:12]
             pattern = "%M:%S.%f"
             fmt = numbers.FORMAT_DATE_TIME5
         elif match.group('second') is None:
             fmt = numbers.FORMAT_DATE_TIME3
             pattern = "%H:%M"
         else:
             pattern = "%H:%M:%S"
             fmt = numbers.FORMAT_DATE_TIME6
         value = datetime.datetime.strptime(value, pattern)
         self.number_format = fmt
         return time_to_days(value)
Esempio n. 5
0
 def _cast_time(self, value):
     """Explicitly convert a string to a number and format as datetime or
     time"""
     match = TIME_REGEX.match(value)
     if match:
         if match.group("microsecond") is not None:
             value = value[:12]
             pattern = "%M:%S.%f"
             fmt = numbers.FORMAT_DATE_TIME5
         elif match.group('second') is None:
             fmt = numbers.FORMAT_DATE_TIME3
             pattern = "%H:%M"
         else:
             pattern = "%H:%M:%S"
             fmt = numbers.FORMAT_DATE_TIME6
         value = datetime.datetime.strptime(value, pattern)
         self.number_format = fmt
         return time_to_days(value)