Datetime objects hurt my head for some reason. I am writing to figure out how to shift a date time object by 12 hours. I also need to know how to figure out if two date time object's differ by say 1 minute or more.
Asked
Active
Viewed 3.1k times
2 Answers
32
The datetime
library has a timedelta
object specifically for this kind of thing:
import datetime
mydatetime = datetime.now() # or whatever value you want
twelvelater = mydatetime + datetime.timedelta(hours=12)
twelveearlier = mydatetime - datetime.timedelta(hours=12)
difference = abs(some_datetime_A - some_datetime_B)
# difference is now a timedelta object
# there are a couple of ways to do this comparision:
if difference > timedelta(minutes=1):
print "Timestamps were more than a minute apart"
# or:
if difference.total_seconds() > 60:
print "Timestamps were more than a minute apart"

Amber
- 507,862
- 82
- 626
- 550
-
It can fail if utc offset changes for the local timezone e.g., during DST transitions. Date arithmetic is more convenient to perform using UTC timezone, and converting it to a local time only to display it to a user – jfs Oct 28 '12 at 18:31
5
You'd use datetime.timedelta
for something like this.
from datetime import timedelta
datetime
arithmetic works kind of like normal arithmetic: you can add a timedelta
object to a datetime
object to shift its time:
dt = # some datetime object
dt_plus_12 = dt + timedelta(hours=12)
Also you can subtract two datetime
objects to get a timedelta
representing the difference between them:
dt2 = # some other datetime object
ONE_MINUTE = timedelta(minutes=1)
if abs(dt2 - dt) > ONE_MINUTE:
# do something

David Z
- 128,184
- 27
- 255
- 279