2024-04-12 16:03:12 +02:00

54 lines
1.5 KiB
Plaintext

This rule raises an issue when trying to perform comparison or arithmetic operations between `datetime.date` and `datetime.datetime` objects.
== Why is this an issue?
Despite the fact that the `datetime.datetime` is inherited from the `datetime.date` they are not compatible from comparison and arithmetical operations perspective.
Trying to compare a `datetime.datetime` with a `datetime.date` objects leads to a `TypeError`.
== How to fix it
Make sure that comparison or arithmetic operations are performed between compatible types e.g. convert `datetime.datetime` to `datetime.date` or vice versa.
=== Code examples
==== Noncompliant code example
[source,python,diff-id=1,diff-type=noncompliant]
----
from datetime import datetime, date
dt = datetime.now()
d = date.today()
if dt < d: # Noncompliant: TypeError: can't compare datetime.datetime to datetime.date
...
----
==== Compliant solution
[source,python,diff-id=1,diff-type=compliant]
----
from datetime import datetime, date
dt = datetime.now()
d = date.today()
if dt.date() < d: # OK
...
----
//=== How does this work?
//=== Pitfalls
//=== Going the extra mile
== Resources
=== Documentation
* Python documentation - https://docs.python.org/3/library/datetime.html#datetime-objects[Datetime Objects]
* Python documentation - https://docs.python.org/3/library/datetime.html#date-objects[Date Objects]
//=== Articles & blog posts
//=== Conference presentations
//=== Standards
//=== External coding guidelines
//=== Benchmarks