Date/Time conversions
import datetime
import time
# Create date from epoch
date = datetime.datetime.utcfromtimestamp(1489968401)
# Create date from year, month, day
date = datetime.datetime(2017, 8, 20)
# Get seconds from epoch
time.time()
# Test things
datetime.datetime.utcfromtimestamp(int(time.time()))
# Get tuple of year, month, ...
## Check the structure help(datetime.datetime.timetuple)
date.timetuple()
# Convert from tuple to epoch
time.mktime(p.timetuple())
Date/time arithmetic
import datetime
import time
date = datetime.datetime(2017, 8, 20)
# datetime.datetime(2017, 8, 20, 0, 0)
diff_8_days = datetime.timedelta(days = 8)
diff_3_minutes = datetime.timedelta(minutes = 3)
date_plus_8_days = date + diff_8_days
# datetime.datetime(2017, 8, 28, 0, 0)
date_minus_3_minutes = date - diff_3_minutes
# datetime.datetime(2017, 8, 19, 23, 57)
Difference between dates
From here
from datetime import datetime
from dateutil import relativedelta
##Aug 7 1989 8:10 pm
date_1 = datetime(1989, 8, 7, 20, 10)
##Dec 5 1990 5:20 am
date_2 = datetime(1990, 12, 5, 5, 20)
#This will find the difference between the two dates
difference = relativedelta.relativedelta(date_2, date_1)
years = difference.years
months = difference.months
days = difference.days
hours = difference.hours
minutes = difference.minutes
print "Difference is %s year, %s months, %s days, %s hours, %s minutes " %(years, months, days, hours, minutes)
Get date time for different timezones
import datetime
import pytz
"""
timezone must be one of the format "Europe/Berlin"
returns string according to format (e.g. "%Y-%m-%dT%H:%M:%S%z")
"""
def get_now_for_timezone(timezone):
utcmoment_naive = datetime.datetime.utcnow()
utcmoment = utcmoment_naive.replace(tzinfo=pytz.utc)
localDatetime = utcmoment.astimezone(pytz.timezone(timezone))
return localDatetime
def get_now_for_timezone_plus_minutes(timezone, minutes):
now = get_now_for_timezone(timezone)
return add_minutes(now, minutes)
def get_string_now_for_timezone_and_dateformat_string(timezone, dateformat):
localDatetime = get_now_for_timezone(timezone)
return localDatetime.strftime(dateformat)
def add_minutes(some_date, minutes_to_add):
diff_45_minutes = datetime.timedelta(minutes = minutes_to_add)
return some_date + diff_45_minutes
def get_string_now_plus_minutes_for_timezone_and_dateformat(minutes, timezone, dateformat):
plus_minutes = get_now_for_timezone_plus_minutes(timezone, minutes)
return plus_minutes.strftime(dateformat)
date_format = "%Y-%m-%dT%H:%M:%S%z"
print(get_now_for_timezone("UTC"))
# 2019-06-28 09:53:44.435425+00:00
print(get_now_for_timezone_plus_minutes("America/Los_Angeles", 20))
# 2019-06-28 03:13:44.435985-07:00
print(get_string_now_for_timezone_and_dateformat_string("UTC", date_format))
# 2019-06-28T09:53:44+0000
print(get_string_now_plus_minutes_for_timezone_and_dateformat(2, "Europe/Madrid", date_format))
# 2019-06-28T11:55:44+0200