Is there a conflict of libraries here?
On 06Nov2020 09:36, Frank Millman <frank at chagford.com> wrote:
>On 2020-11-06 9:25 AM, Steve wrote:
>>In my program, I have the following lines of code:
>> import datetime
>> from datetime import timedelta
>> from time import gmtime, strftime ##define strftime as time/date right
>>If I add the code:
>> from datetime import datetime
>>these new lines work:
>> dt = datetime.fromisoformat(ItemDateTime)
>> dt_string = dt.strftime(' at %H:%M on %A %d %B %Y')
>>and will fail without that "datetime import datetime" line
Right, because you're using the datetime _class_ to get the
fromisoformat factory function.
>>With that "datetime import datetime" line included,
>>all of the lines of code throughout the program that contain
>>These have been in use for over three years and there are at least a dozen
Yeah. because _those_ lines are using the name "datetime" as the module
Just replace "datetime.datetime" throughout with "datetime". Your code
will be more readable anyway.
>>The error produced is:
>> time1 = datetime.datetime.strptime(T1, date_format)
>> AttributeError: type object 'datetime.datetime' has no attribute
That is because "datetime" is currently the class, not the module.
>1. Remove the line 'from datetime import datetime'.
>2. Change dt = datetime.fromisoformat(ItemDateTime) to
> dt = datetime.datetime.fromisoformat(ItemDateTime)
>Unless I have missed something, that should work.
That will work, but produces verbose code. I prefer to import things
_from_ the datetime module, letting me drop the 'datetime." module
prefix across the code.
Cameron Simpson <cs at cskk.id.au>