YakuzaNY
YakuzaNY

Reputation: 69

Python: Comparing two dates

I would like to know how many days are passed from a x ago to today

I wrote this:

from datetime import datetime

timestamp = 1629195530 # A month ago
before = datetime.fromtimestamp(timestamp)
daysBefore = before.strftime("%d")

now = datetime.now()
today = now.strftime("%d")

print(f"daysBefore {daysBefore} - today {today}")
daysPassed = int(today) - int(daysBefore)

But so it seems, daysBefore is returning the days of the month, I can't get my head around this :(

Upvotes: 0

Views: 118

Answers (3)

CyDevos
CyDevos

Reputation: 401

Your issue is due to this: strftime("%d")
You are converting you date to a string and then to an int to make the difference. You can just use the datetime to do this for you:

timestamp = 1629195530 # A month ago
before = datetime.fromtimestamp(timestamp)
now = datetime.now()

print(f"daysBefore {before} - today {now}")
daysPassed = now - before
print(daysPassed.days)

Upvotes: 1

Ehsan Rahi
Ehsan Rahi

Reputation: 71

Exact format with date time hour minute accuracy

from datetime import datetime

timestamp = 1629195530 # A month ago
before = datetime.fromtimestamp(timestamp)
now = datetime.now()
print(now - before))

Upvotes: 1

3dSpatialUser
3dSpatialUser

Reputation: 2396

print(f"daysBefore {daysBefore} - today {today}")

The reason this doesn't work is that it gives the day of the month. For example 17th of July and 17th of August will give a difference of zero days.

Therefore the recommend method is as @abdul Niyas P M says, use the whole date.time format to subtract two dates and afterwards extract the days.

Upvotes: 1

Related Questions