Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python: convert pywintyptes.datetime to datetime.datetime

I am using pywin32 to read/write to an Excel file. I have some dates in Excel, stored in format yyyy-mm-dd hh:mm:ss. I would like to import those into Python as datetime.datetime objects. Here is the line of code I started with:

prior_datetime = datetime.strptime(excel_ws.Cells(2, 4).Value, '%Y-%m-%d %H:%M:%S')

That didn't work. I got the error:

strptime() argument 1 must be str, not pywintypes.datetime

I tried casting it to a string, like so:

prior_datetime = datetime.strptime(str(excel_ws.Cells(2, 4).Value), '%Y-%m-%d %H:%M:%S')

That didn't work either. I got the error:

ValueError: unconverted data remains: +00:00

So then I tried something a little different:

prior_datetime = datetime.fromtimestamp(int(excel_ws.Cells(2, 4).Value))

Still no luck. Error:

TypeError: a float is required.

Casting to a float didn't help. Nor integer. (Hey, I was desperate at this point.)

I might be looking in the wrong plce, but I'm having a terrible time finding any good documentation on pywin32 in general or pywintypes or pywintypes.datetime in particular.

Any help?

like image 618
Nathaniel Givens Avatar asked Aug 18 '16 22:08

Nathaniel Givens


1 Answers

Adding a simple option for converting pywintypes.datetime to datetime.datetime

By adding any datetime.datetime type to the pywintypes.datetime will result in a cast to the datetime.dateime type. This can be done using a zero-delta for example.

For the case of the original question, the below can be used without requiring additional modules

desired_datetime_type = excel_ws.Cells(2, 4).Value + datetime.timedelta(0)
like image 159
The-Duck Avatar answered Oct 12 '22 17:10

The-Duck