Last update on February 28 2020 12:12:15 (UTC/GMT +8 hours)
enter image description here
The datetime module supplies classes for manipulating dates and times in both simple and complex ways.
Basic datetime objects usage:
The datetime module contains three primary types of objects - date, time, and datetime.
Date:
Output:
Time:
Output:
Date Time:
Output:
Date Time:
Output:
Iterate over dates:
Print from a start date to some end date.
Output:
Computing time differences:
The timedelta module is used to compute differences between times:
Output:
Specifying time is optional when creating a new datetime object
Output:
delta is of type timedelta:
Output:
To get n day's after and n day's before date we could use:
n day's after date:
Output:
n day's before date:
Output:
Converting timestamp to date time:
The datetime module can convert a POSIX timestamp to a ITC datetime object.
The Epoch is January 1st, 1970 midnight.
Output:
Simple date arithmetic:
Output:
Subtracting months from a date:
Output:
Using the dateutils module:
Output:
Switching between time zones:
To switch between time zones, we need datetime objects that are timezone-aware.
Output:
Fuzzy datetime parsing (extracting datetime out of a text):
Output:
Get an ISO 8601 timestamp:
Without timezone, with microseconds:
Output:
With timezone, with microseconds:
Output:
With timezone, without microseconds:
Output:
Parsing a string with a short time zone name into a timr zone aware datetime object:
Output:
Parsing an arbitrary ISO 8601 timestamp with minimal libraries:
Python has only limited support for parsing ISO 8601 timestamps and for strptime you need to know exactly what format it is in. The stringification of a datetime is an ISO 8601 timestamp, with space as a separator and 6 digit fraction:
Output:
but if the fraction is 0, no fractional part is output
Output:
Parsing a string into a timezone aware datetime object:
Python 3.2+ has support for %z format when parsing a string into a datetime object.
UTC offset in the form +HHMM or -HHMM (empty string if the object is naive).
Output:
Fixed Offset Time Zones
Output:
Zones with daylight savings time using third party library:
Use the tz.gettz() method to get a time zone object, which can then be passed directly to the datetime constructor:
Time zone name (empty string if the object is naive).
(empty), UTC, EST, CST
%j
Day of the year as a zero-padded decimal number.
001, 002, …, 366
(9)
%U
Week number of the year (Sunday as the first day of the week) as a zero padded decimal number. All days in a new year preceding the first Sunday are considered to be in week 0.
00, 01, …, 53
(7), (9)
%W
Week number of the year (Monday as the first day of the week) as a decimal number. All days in a new year preceding the first Monday are considered to be in week 0.
00, 01, …, 53
(7), (9)
%c
Locale’s appropriate date and time representation.
Tue Aug 16 21:30:00 1988 (en_US);
Di 16 Aug 21:30:00 1988 (de_DE)
import datetime
# The size of each step in days
day_delta = datetime.timedelta(days=1)
start_date = datetime.date.today()
end_date = start_date + 7*day_delta
for i in range((end_date - start_date).days):
print(start_date + i*day_delta)
from datetime import datetime, timedelta
now = datetime.now()
then = datetime(2019, 5, 23)
print(then)
2019-05-23 00:00:00
from datetime import datetime, timedelta
now = datetime.now()
then = datetime(2019, 5, 23)
delta = now-then
print(delta)
162 days, 9:10:42.599772
from datetime import datetime, timedelta
now = datetime.now()
then = datetime(2019, 5, 23)
delta = now-then
print(delta.days)
# 60
print(delta.seconds)
# 40826
162
33296
from datetime import date, timedelta
current_date = date.today().isoformat()
days_after = (date.today()+timedelta(days=30)).isoformat()
print("\nCurrent Date: ",current_date)
print("30 days after current date : ",days_after)
Current Date: 2019-11-02
30 days after current date : 2019-12-02
from datetime import date, timedelta
current_date = date.today().isoformat()
days_before = (date.today()-timedelta(days=30)).isoformat()
print("\nCurrent Date: ",current_date)
print("30 days before current date: ",days_before)
Current Date: 2019-11-02
30 days before current date: 2019-10-03
import time
from datetime import datetime
seconds_since_epoch=time.time() #1469182681.709
utc_date=datetime.utcfromtimestamp(seconds_since_epoch)
print(utc_date)