Working with time-formatted data in Python is very common in everyday work, so today I’ll share datetime-related examples

The article is very long, high and low to endure, if not endure, then collect it, always used

Radish brother also thoughtful made a PDF, at the end of the article to get!

Use the time module to display the current date and time

import time
from time import gmtime, strftime
 
t = time.localtime()
print (time.asctime(t))
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()))
print(strftime("%A", gmtime()))
print(strftime("%D", gmtime()))
print(strftime("%B", gmtime()))
print(strftime("%y", gmtime()))
 
# Convert seconds into GMT date
print(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime(1234567890)))
Copy the code

Output:

Sun May 7 09:30:37 2017
Sun, 07 May 2017 04:00:37 +0000
Sunday
05/07/17
May
17
Fri, 13 Feb 2009 23:31:30 +0000
Copy the code

Convert days, hours, and minutes to seconds

SECONDS_PER_MINUTE  = 60
SECONDS_PER_HOUR    = 3600
SECONDS_PER_DAY     = 86400
 
#Read the inputs from user
days    = int(input("Enter number of Days: "))
hours   = int(input("Enter number of Hours: "))
minutes = int(input("Enter number of Minutes: "))
seconds = int(input("Enter number of Seconds: "))
 
#Calculate the days, hours, minutes and seconds
total_seconds = days * SECONDS_PER_DAY
total_seconds = total_seconds + ( hours * SECONDS_PER_HOUR)
total_seconds = total_seconds + ( minutes * SECONDS_PER_MINUTE)
total_seconds = total_seconds + seconds
 
#Display the result
print("Total number of seconds: "."%d"%(total_seconds))
Copy the code

Output:

Enter number of Days: 5
Enter number of Hours: 36
Enter number of Minutes: 24
Enter number of Seconds: 15
Total number of seconds: 563055
Copy the code

Use Pandas to get the current date and time

import pandas as pd
print(pd.datetime.now())
print(pd.datetime.now().date())
print(pd.datetime.now().year)
print(pd.datetime.now().month)
print(pd.datetime.now().day)
print(pd.datetime.now().hour)
print(pd.datetime.now().minute)
print(pd.datetime.now().second)
print(pd.datetime.now().microsecond)
Copy the code

Output:

2018-01-19 2018-01-19 2018 1 19 16 8 28 394553Copy the code

Converts a string to a date and time object

from datetime import datetime
from dateutil import parser

d1 = "Jan 7 2015 1:15PM"
d2 = "2015 Jan 7 1:33PM"

# If you know date format
date1 = datetime.strptime(d1, '%b %d %Y %I:%M%p')
print(type(date1))
print(date1)

# If you don't know date format
date2 = parser.parse(d2)
print(type(date2))
print(date2)
Copy the code

Output:

class 'datetime.datetime'
2015-01-07 13:15:00

class 'datetime.datetime'
2015-01-07 13:33:00
Copy the code

Gets the current time in milliseconds

import time
 
milliseconds = int(round(time.time() * 1000))
print(milliseconds)
Copy the code

Output:

1516364270650
Copy the code

Get the current date and time in MST, EST, UTC, GMT, and HST

from datetime import datetime
from pytz import timezone
 
mst = timezone('MST')
print("Time in MST:", datetime.now(mst))
 
est = timezone('EST')
print("Time in EST:", datetime.now(est))
 
utc = timezone('UTC')
print("Time in UTC:", datetime.now(utc))
 
gmt = timezone('GMT')
print("Time in GMT:", datetime.now(gmt))
 
hst = timezone('HST')
print("Time in HST:", datetime.now(hst))
Copy the code

Output:

Time in MST: 2017-01-19 06:06:14.495605-07:00 Time in EST: 2017-01-19 08:06:14.496606-05:00 Time in UTC: 2017-01-19 06:06:14.496606-05:00 Time in MST: 2017-01-19 06:06:14.495605-07:00 Time in EST: 2017-01-19 08:06:14.496606-05:00 Time in UTC: 2017-01-19 13:06:14.496606+00:00 Time in GMT: 2017-01-19 13:06:14.496606+00:00 Time in HST: The 2017-01-19 03:06:14. 497606-10:00Copy the code

Retrieves the day of the week from a given date

import datetime
 
dayofweek = datetime.date(2010.6.16).strftime("%A")
print(dayofweek)
# weekday Monday is 0 and Sunday is 6
print("weekday():", datetime.date(2010.6.16).weekday())
 
# isoweekday() Monday is 1 and Sunday is 7
print("isoweekday()", datetime.date(2010.6.16).isoweekday())
 
dayofweek = datetime.datetime.today().strftime("%A")
print(dayofweek)
print("weekday():", datetime.datetime.today().weekday())
print("isoweekday()", datetime.datetime.today().isoweekday())
Copy the code

Output:

Wednesday
weekday(): 2
isoweekday() 3
Friday
weekday(): 4
isoweekday() 5
Copy the code

Calculates the time difference between two date-time objects

import datetime
from datetime import timedelta
 
datetimeFormat = '%Y-%m-%d %H:%M:%S.%f'
date1 = 'the 2016-04-16 10:01:28. 585'
date2 = 'the 2016-03-10 09:56:28. 067'
diff = datetime.datetime.strptime(date1, datetimeFormat)\
    - datetime.datetime.strptime(date2, datetimeFormat)
 
print("Difference:", diff)
print("Days:", diff.days)
print("Microseconds:", diff.microseconds)
print("Seconds:", diff.seconds)
Copy the code

Output:

Difference: 37 days, 0:05:00.518000
Days: 37
Microseconds: 518000
Seconds: 300
Copy the code

Add 5 minutes to the Unix timestamp

import datetime
import calendar
 
future = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)
print(calendar.timegm(future.timetuple()))
Copy the code

Output:

1621069619
Copy the code

Iterate over a series of dates in Python

import datetime

start = datetime.datetime.strptime("21-06-2020"."%d-%m-%Y")
end = datetime.datetime.strptime("05-07-2020"."%d-%m-%Y")
date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days)]

for date in date_generated:
    print(date.strftime("%d-%m-%Y"))
Copy the code

Output:

21-06-2020 22-06-2020 23-06-2020 24-06-2020 25-06-2020 26-06-2020 27-06-2020 28-06-2020 29-06-2020 30-06-2020 01-07-2020 The 02-07-2020 03-07-2020 02-07-2020Copy the code

Paris time was changed to New York time

import pendulum
 
in_paris = pendulum.datetime(2016.8.7.22.24.30, tz='Europe/Paris')
print(in_paris)
 
in_us = in_paris.in_timezone('America/New_York')
print(in_us)
Copy the code

Output:

2016-08-07T22:24:30+02:00
2016-08-07T16:24:30-04:00
Copy the code

Get the last 7 working days using Python

from datetime import date
from datetime import timedelta
 
today = date.today()
 
for i in range(7):
    d = today - timedelta(days=i)
    if d.weekday() < 5:
        print(d)
Copy the code

Output:

2021-05-18
2021-05-17
2021-05-14
2021-05-13
2021-05-12
Copy the code

Age from today’s date and a person’s birthday

from datetime import date
 
 
def calculate_age(born) :
    today = date.today()
    try:
        birthday = born.replace(year=today.year)
    except ValueError:
        birthday = born.replace(year=today.year, month=born.month + 1, day=1)
    if birthday > today:
        return today.year - born.year - 1
    else:
        return today.year - born.year
 
 
print(calculate_age(date(2001.3.1)))
Copy the code

Output:

20
Copy the code

Get the first Tuesday of the month

import calendar
from datetime import datetime
 
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
monthcal = c.monthdatescalendar(datetime.today().year, datetime.today().month)
 
try:
    tues = [day for week in monthcal for day in week if
            day.weekday() == calendar.TUESDAY and day.month == datetime.today().month][0]
    print(tues)
except IndexError:
    print('No date found')
Copy the code

Output:

2021-05-04
Copy the code

Converts integers to date objects

from datetime import datetime

i = 1545730073
timestamp = datetime.fromtimestamp(i)

print(timestamp)
print(type(timestamp))
Copy the code

Output:

The 2018-12-25 14:57:53Copy the code

Number of days minus N days from the current date

from datetime import datetime, timedelta

d = datetime.today() - timedelta(days=5)
print(d)
Copy the code

Output:

The 2021-05-10 12:59:14. 867969Copy the code

Compare two dates

import datetime

a = datetime.datetime(2020.12.31.23.59.59)
b = datetime.datetime(2020.11.30.23.59.59)

print(a < b)
print(a > b)
Copy the code

Output:

False
True
Copy the code

Extracts the year from a Datetime object

import datetime
 
year = datetime.date.today().year
print(year)
Copy the code

Output:

2021
Copy the code

Find the day of the week in Python

import pendulum
 
dt = pendulum.parse('2021-05-18')
print(dt.day_of_week)
 
dt = pendulum.parse('2021-05-01')
print(dt.day_of_week)
 
dt = pendulum.parse('2021-05-21')
print(dt.day_of_week)
Copy the code

Output:

2 June 5Copy the code

Retrieves the date 7 days ago from the current date

from datetime import datetime, timedelta
 
now = datetime.now()
 
for x in range(7):
    d = now - timedelta(days=x)
    print(d.strftime("%Y-%m-%d"))
Copy the code

Output:

2021-05-18
2021-05-17
2021-05-16
2021-05-15
2021-05-14
2021-05-13
2021-05-12
Copy the code

Converts the difference between two date-time objects to seconds

import datetime
 
time1 = datetime.datetime.strptime(19 01 '2021'.'%d %m %Y')
time2 = datetime.datetime.strptime('25 01 2021'.'%d %m %Y')
 
difference = time2 - time1
print(difference)
 
seconds = difference.total_seconds()
print(seconds)
Copy the code

Output:

6 days, 0:00:00
518400.0
Copy the code

Get the third Friday of any month

import calendar
 
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
year = 2021
month = 5
monthcal = c.monthdatescalendar(year, month)
 
try:
    third_friday = [day for week in monthcal for day in week if
                    day.weekday() == calendar.FRIDAY and day.month == month][2]
    print(third_friday)
except IndexError:
    print('No date found')
Copy the code

Output:

2021-05-21
Copy the code

Gets the date from the week in Python

import datetime
from dateutil.relativedelta import relativedelta
 
week = 25
year = 2021
date = datetime.date(year, 1.1) + relativedelta(weeks=+week)
print(date)
Copy the code

Output:

2021-06-25
Copy the code

The working day to get a specific date

import datetime
 
print(datetime.date(2020.5.15).isocalendar()[2])
Copy the code

Output:

5
Copy the code

Create a DateTime 15 minutes ago

import datetime
 
dt = datetime.datetime.now() - datetime.timedelta(minutes=15)
print(dt)
Copy the code

Output:

The 2021-05-15 22:25:55. 897365Copy the code

Gets the start and end dates of the week from a specific date

import pendulum
 
dt = pendulum.datetime(2012.9.5)
 
start = dt.start_of('week')
print(start.to_datetime_string())
 
end = dt.end_of('week')
print(end.to_datetime_string())
Copy the code

Output:

The 2012-09-03 00:00:00 2012-09-03 23:59:59Copy the code

Difference between two dates (in seconds)

from datetime import datetime
 
fmt = '%Y-%m-%d %H:%M:%S'
d1 = datetime.strptime('the 2020-01-01 17:31:22', fmt)
d2 = datetime.strptime('the 2020-01-03 17:31:22', fmt)
 
days_diff = d2 - d1
print(days_diff.days * 24 * 60 * 60)
Copy the code

Output:

172800
Copy the code

Get yesterday’s date MMDDYY in this format

from datetime import date, timedelta
 
yesterday = date.today() - timedelta(days=1)
print(yesterday.strftime('%m%d%y'))
Copy the code

Output:

051421
Copy the code

Get last Wednesday from today’s date

from datetime import date
from datetime import timedelta

today = date.today()

offset = (today.weekday() - 2) % 7
wednesday = today - timedelta(days=offset)
print(wednesday)
Copy the code

Output:

2021-05-12
Copy the code

A list of all available time zones is printed

import pytz

for i in pytz.all_timezones:
    print(i)
Copy the code

Output:

Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Asmera
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
...
US/Mountain
US/Pacific
US/Samoa
UTC
Universal
W-SU
WET
Zulu
Copy the code

Gets the range of dates between the specified start and end dates

import datetime
 
start = datetime.datetime.strptime("21-06-2020"."%d-%m-%Y")
end = datetime.datetime.strptime("05-07-2020"."%d-%m-%Y")
date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days)]
 
for date in date_generated:
    print(date.strftime("%d-%m-%Y"))
Copy the code

Output:

21-06-2020 22-06-2020 23-06-2020 24-06-2020 25-06-2020 26-06-2020 27-06-2020 28-06-2020 29-06-2020 30-06-2020 01-07-2020 The 02-07-2020 03-07-2020 02-07-2020Copy the code

Milliseconds are converted to data

import datetime

time_in_millis = 1596542285000
dt = datetime.datetime.fromtimestamp(time_in_millis / 1000.0, tz=datetime.timezone.utc)
print(dt)
Copy the code

Output:

The 2020-08-04 11:58:05 + 00:00Copy the code

Find the date of the first Sunday after the given date

import datetime
 
 
def next_weekday(d, weekday) :
    days_ahead = weekday - d.weekday()
    if days_ahead <= 0:
        days_ahead += 7
    return d + datetime.timedelta(days_ahead)
 
 
d = datetime.date(2021.5.16)
next_sunday = next_weekday(d, 6)
print(next_sunday)
Copy the code

Output:

2021-05-23
Copy the code

Converts (Unix) timestamp seconds to date and time strings

from datetime import datetime

dateStr = datetime.fromtimestamp(1415419007).strftime("%A, %B %d, %Y %I:%M:%S")
print(type(dateStr))
print(dateStr)
Copy the code

Output:

Saturday, November 08, 2014 09:26:47
Copy the code

The difference between two dates in months

from datetime import datetime
from dateutil import relativedelta
 
date1 = datetime.strptime('the 2014-01-12 12:00:00'.'%Y-%m-%d %H:%M:%S')
date2 = datetime.strptime('the 2021-07-15 12:00:00'.'%Y-%m-%d %H:%M:%S')
 
r = relativedelta.relativedelta(date2, date1)
print(r.months + (12 * r.years))
Copy the code

Output:

90
Copy the code

Converts the local time string to UTC

from datetime import *
from dateutil import *
from dateutil.tz import *
 
 
utc_zone = tz.gettz('UTC')
local_zone = tz.gettz('America/Chicago')
 
utc_zone = tz.tzutc()
local_zone = tz.tzlocal()
 
 
local_time = datetime.strptime("The 2020-10-25 15:12:00".'%Y-%m-%d %H:%M:%S')
print(local_time)
local_time = local_time.replace(tzinfo=local_zone)
print(local_time)
 
utc_time = local_time.astimezone(utc_zone)
print(utc_time)
 
utc_string = utc_time.strftime('%Y-%m-%d %H:%M:%S')
print(utc_string)
Copy the code

Output:

2020-10-25 15:12:00
2020-10-25 15:12:00+05:30
2020-10-25 09:42:00+00:00
2020-10-25 09:42:00
Copy the code

Gets the last Thursday of the month

import calendar
from datetime import datetime
 
month = calendar.monthcalendar(datetime.today().year, datetime.today().month)
 
thrusday = max(month[-1][calendar.THURSDAY], month[-2][calendar.THURSDAY])
print(thrusday)
Copy the code

Output:

27
Copy the code

Find the week of the year from a specific date

import pendulum
 
dt = pendulum.parse('2015-05-18')
print(dt.week_of_year)
 
dt = pendulum.parse('2019-12-01')
print(dt.week_of_year)
 
dt = pendulum.parse('2018-01-21')
print(dt.week_of_year)
Copy the code

Output:

21
48
3
Copy the code

Gets the day of the week from the given date

import datetime
import calendar
 
dt = datetime.datetime(2021.4.25.23.24.55.173504)
print(calendar.day_name[dt.weekday()])
Copy the code

Output:

Sunday
Copy the code

Print the current time with AM PM

from datetime import datetime
 
print(datetime.today().strftime("%I:%M %p"))
Copy the code

Output:

10:11 PM
Copy the code

Get the last day of the month

import calendar
 
print(calendar.monthrange(2002.1) [1])
print(calendar.monthrange(2008.6) [1])
print(calendar.monthrange(2012.2) [1])
print(calendar.monthrange(2015.2) [1])
Copy the code

Output:

29 and 30, 28Copy the code

Gets the business day name from the business day value

import calendar
 
print(calendar.day_name[0])
print(calendar.day_name[1])
print(calendar.day_name[2])
print(calendar.day_name[3])
print(calendar.day_name[4])
print(calendar.day_name[5])
print(calendar.day_name[6])
Copy the code

Output:

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Copy the code

Adds N hours to the current date and time

from datetime import datetime, timedelta

d = datetime.today() + timedelta(hours=18)
print(d)
Copy the code

Output:

The 2021-05-16 07:36:08. 189948Copy the code

Obtains the year, month, day, hour, and minute from the current date

import datetime
 
now = datetime.datetime.now()
print(now.year, now.month, now.day, now.hour, now.minute, now.second)
Copy the code

Output:

2021 5 15 14 27 33
Copy the code

Gets the last Sunday of a particular month and year

import calendar

month = calendar.monthcalendar(2021.2)

last_sunday = max(month[-1][calendar.SUNDAY], month[-2][calendar.SUNDAY])
print(last_sunday)
Copy the code

Output:

28
Copy the code

Find the day of the year for a particular date

import pendulum
 
dt = pendulum.parse('2015-05-18')
print(dt.day_of_year)
 
dt = pendulum.parse('2019-12-01')
print(dt.day_of_year)
 
dt = pendulum.parse('2018-01-21')
print(dt.day_of_year)
Copy the code

Output:

138
335
21
Copy the code

Find if the current date is weekday or weekend

import datetime
 
weekno = datetime.datetime.today().weekday()
if weekno < 5:
    print("Weekday")
else:  # 5 Sat, 6 Sun
    print("Weekend")
Copy the code

Output:

Weekday
Copy the code

Combine datetime.date and datetime.time objects

import datetime
 
d = datetime.datetime.combine(datetime.date(2020.11.14),
                              datetime.time(10.23.15))
 
print(d)
Copy the code

Output:

The 2020-11-14 10:23:15Copy the code

Get the 5th Monday of each month

import calendar
 
c = calendar.Calendar(firstweekday=calendar.SUNDAY)
year = 2016
month = 2
monthcal = c.monthdatescalendar(year, month)
 
try:
    fifth_monday = [day for week in monthcal for day in week if
                    day.weekday() == calendar.MONDAY and day.month == month][4]
    print(fifth_monday)
except IndexError:
    print('No date found')
Copy the code

Output:

2016-02-29
Copy the code

Converts a date-time object to a date object

from datetime import datetime

datetime_obj = datetime(2020.12.15.10.15.45.321474)
print(datetime_obj)

date_obj = datetime_obj.date()
print(date_obj)
Copy the code

Output:

The 2020-12-15 10:15:45. 321474 2020-12-15Copy the code

Gets the current date time without microseconds

from datetime import datetime

print(datetime.now().isoformat(' '.'seconds'))
Copy the code

Output:

The 2021-05-15 12:55:45Copy the code

Adds N seconds to the specific date time

import datetime

a = datetime.datetime(2020.12.31.23.59.45)
b = a + datetime.timedelta(seconds=30)

print(a)
print(b)
Copy the code

Output:

The 2020-12-31 23:59:45 2020-12-31 00:00:15Copy the code

Gets the two-digit month and date from the current date

import datetime
 
dt = datetime.datetime.now()
 
print(dt.strftime('%m'))
print('{:02d}'.format(dt.month))
print(f'{dt.month:02d}')
print('%02d' % dt.month)
 
print(dt.strftime('%d'))
print('{:02d}'.format(dt.day))
print(f'{dt.day:02d}')
print('%02d' % dt.day)
Copy the code

Output:

05 05 05 05 15 15 15 15 15Copy the code

Start and end dates to get month data from a specific date

import pendulum
 
dt = pendulum.datetime(2012.9.5)
 
start = dt.start_of('month')
print(start.to_datetime_string())
 
end = dt.end_of('month')
print(end.to_datetime_string())
Copy the code

Output:

The 2012-09-01 00:00:00 2012-09-01 23:59:59Copy the code

The difference between two dates measured in weeks

from datetime import date
 
date1 = date(2020.12.23)
date2 = date(2021.5.11)
 
days = abs(date1 - date2).days
print(days // 7)
Copy the code

Output:

19
Copy the code

Converts a date in string format to a Unix timestamp

import datetime
 
stime = '15/05/2021'
print(datetime.datetime.strptime(stime, "%d/%m/%Y").timestamp())
Copy the code

Output:

1621017000.0
Copy the code

Gets the dates of the last Sunday and Saturday

from datetime import datetime, timedelta
 
 
def prior_week_end() :
    return datetime.now() - timedelta(days=((datetime.now().isoweekday() + 1) % 7))
 
 
def prior_week_start() :
    return prior_week_end() - timedelta(days=6)
 
 
print('Sunday'.format(prior_week_start()))
print('Saturday'.format(prior_week_end()))
Copy the code

Output:

Sunday 2021-05-09 13:13:30.057765
Saturday 2021-05-15 13:13:30.058912
Copy the code

Check whether the object is of type datetime.date

import datetime
 
x = '2012-9-1'
y = datetime.date(2012.9.1)
 
print(isinstance(x, datetime.date))
print(isinstance(y, datetime.date))
Copy the code

Output:

False
True
Copy the code

Gets the number of weeks for a specific date

import datetime
 
print(datetime.date(2020.5.15).isocalendar()[1])
Copy the code

Output:

20
Copy the code

Obtain UTC time

from datetime import datetime

dt = datetime.utcnow()
print(dt)
Copy the code

Output:

The 2021-05-15 17:01:31. 008808Copy the code

Get the start and end dates of the week

import pendulum

today = pendulum.now()

start = today.start_of('week')
print(start.to_datetime_string())

end = today.end_of('week')
print(end.to_datetime_string())
Copy the code

Output:

The 2021-05-10 00:00:00 2021-05-10 23:59:59Copy the code

Difference between two dates (in minutes)

from datetime import datetime
 
fmt = '%Y-%m-%d %H:%M:%S'
d1 = datetime.strptime('the 2010-01-01 17:31:22', fmt)
d2 = datetime.strptime('the 2010-01-03 17:31:22', fmt)
 
days_diff = d2 - d1
print(days_diff.days * 24 * 60)
Copy the code

Output:

2880
Copy the code

Converts a date-time object to a date string

import datetime
 
t = datetime.datetime(2020.12.23)
x = t.strftime('%m/%d/%Y')
print(x)
Copy the code

Output:

12/23/2020
Copy the code

Get last Friday

from datetime import date
from datetime import timedelta

today = date.today()

offset = (today.weekday() - 4) % 7
friday = today - timedelta(days=offset)
print(friday)
Copy the code

Output:

2021-05-14
Copy the code

Add 3 weeks to any specific date

import pendulum
 
dt = pendulum.datetime(2012.2.15)
dt = dt.add(weeks=3)
print(dt.to_date_string())
Copy the code

Output:

2012-03-07
Copy the code

Generates a random date between the other two dates

import random
import time
 
 
def str_time_prop(start, end, time_format, prop) :
    stime = time.mktime(time.strptime(start, time_format))
    etime = time.mktime(time.strptime(end, time_format))
    ptime = stime + prop * (etime - stime)
    return time.strftime(time_format, time.localtime(ptime))
 
 
def random_date(start, end, prop) :
    return str_time_prop(start, end, '%m/%d/%Y %I:%M %p', prop)
 
 
print(random_date("1/1/2020 1:10 PM"."1/1/2021 1:10 AM", random.random()))
Copy the code

Output:

02/25/2020 08:26 AM
Copy the code

Find the date of the first Monday from today

from dateutil.rrule import rrule, WEEKLY, MO
from datetime import date
 
next_monday = rrule(freq=WEEKLY, dtstart=date.today(), byweekday=MO, count=1) [0]
print(next_monday)
Copy the code

Output:

2021-05-17 00:00:00
Copy the code

Difference between two dates (in days)

from datetime import date
 
d1 = date(2019.8.18)
d2 = date(2021.12.10)
 
days_diff = d2 - d1
print(days_diff.days)
Copy the code

Output:

845
Copy the code

Adds six months to the current date

from datetime import datetime
from dateutil.relativedelta import *

date = datetime.now()
print(date)

date = date + relativedelta(months=+6)
print(date)
Copy the code

Output:

The 2021-05-15 13:48:52. 135612 2021-11-15 13:48:52. 135612Copy the code

Convert data time objects to Unix (timestamp)

import datetime
import time

# Saturday, October 10, 2015 10:10:00 AM
date_obj = datetime.datetime(2015.10.10.10.10)
print("Unix Timestamp: ", (time.mktime(date_obj.timetuple())))
Copy the code

Output:

A Unix Timestamp: 1444452000.0Copy the code

Add N digits of year, month, day, hour, minute, and second to the current date and time

import datetime
from dateutil.relativedelta import relativedelta

add_days = datetime.datetime.today() + relativedelta(days=+6)
add_months = datetime.datetime.today() + relativedelta(months=+6)
add_years = datetime.datetime.today() + relativedelta(years=+6)

add_hours = datetime.datetime.today() + relativedelta(hours=+6)
add_mins = datetime.datetime.today() + relativedelta(minutes=+6)
add_seconds = datetime.datetime.today() + relativedelta(seconds=+6)

print("Current Date Time:", datetime.datetime.today())
print("Add 6 days:", add_days)
print("Add 6 months:", add_months)
print("Add 6 years:", add_years)
print("Add 6 hours:", add_hours)
print("Add 6 mins:", add_mins)
print("Add 6 seconds:", add_seconds)
Copy the code

Output:

Current Date Time: 2017-04-04 18:32:10.192671 Add 6 days: 2017-04-10 18:32:10.191671 Add 6 months: 2017-10-04 18:32:10.192671 Add 6 hours: 2023-04-04 18:32:10.192671 Add 6 hours: 2017-04-05 00:32:10. 2017-04-04 18:38:10.192671 Add 6 seconds: 2017-04-04 18:32:16.192671Copy the code

Gets the range of dates between the specified start and end dates

import datetime
 
start = datetime.datetime.strptime("2016-06-15"."%Y-%m-%d")
end = datetime.datetime.strptime("2016-06-30"."%Y-%m-%d")
date_array = \
    (start + datetime.timedelta(days=x) for x in range(0, (end-start).days))
 
for date_object in date_array:
    print(date_object.strftime("%Y-%m-%d"))
Copy the code

Output:

2016-06-15 2016-06-16 2016-06-17 2016-06-18 2016-06-19 2016-06-20 2016-06-21 2016-06-22 2016-06-23 2016-06-24 2016-06-25 The 2016-06-26 2016-06-27 2016-06-28 2016-06-27Copy the code

Subtract N years, months, days, hours, minutes, and seconds to the current date and time

import datetime
from dateutil.relativedelta import relativedelta

sub_days = datetime.datetime.today() + relativedelta(days=-6)
sub_months = datetime.datetime.today() + relativedelta(months=-6)
sub_years = datetime.datetime.today() + relativedelta(years=-6)

sub_hours = datetime.datetime.today() + relativedelta(hours=-6)
sub_mins = datetime.datetime.today() + relativedelta(minutes=-6)
sub_seconds = datetime.datetime.today() + relativedelta(seconds=-6)

print("Current Date Time:", datetime.datetime.today())
print("Subtract 6 days:", add_days)
print("Subtract 6 months:", add_months)
print("Subtract 6 years:", add_years)
print("Subtract 6 hours:", add_hours)
print("Subtract 6 mins:", add_mins)
print("Subtract 6 seconds:", add_seconds)
Copy the code

Output:

Subtract 6 days: 2017-04-04 18:36:29.213046 Subtract 6 months: 2017-04-04 18:36:29 2016-10-04 18:36:29.213046 Subtract 6 Years: Subtract 6 mins: 2017-04-04 12:36:29.213046 Subtract 6 seconds: 2017-04-04 18:36:23.213046Copy the code

Gets the first day of the month and the number of days in the month for the specified year and month

import calendar
 
print("Year:2002 - Month:2")
month_range = calendar.monthrange(2002.2)
print("Weekday of first day of the month:", month_range[0])
print("Number of days in month:", month_range[1])
print(a)print("Year:2010 - Month:5")
month_range = calendar.monthrange(2010.5)
print("Weekday of first day of the month:", month_range[0])
print("Number of days in month:", month_range[1])
Copy the code

Output:

Year:2002 - Month:2
Weekday of first day of the month: 4
Number of days in month: 28

Year:2010 - Month:5
Weekday of first day of the month: 5
Number of days in month: 31
Copy the code

Prints all Mondays for a particular year

from datetime import date, timedelta

year = 2018
date_object = date(year, 1.1)
date_object += timedelta(days=1-date_object.isoweekday())

while date_object.year == year:
    print(date_object)
    date_object += timedelta(days=7)
Copy the code

Output:

2018-01-01 2018-01-08 2018-01-15 2018-01-22 2018-01-29 2018-02-05 2018-02-12... 2018-11-12 2018-11-19 2018-11-26 2018-12-03 2018-12-10 2018-12-17 2018-12-24 2018-12-31Copy the code

Print a calendar for a particular year

import calendar
cal_display = calendar.TextCalendar(calendar.MONDAY)
# Year: 2019
# Column width: 1
# Lines per week: 1 
# Number of spaces between month columns: 0
# No. of months per column: 2
print(cal_display.formatyear(2019.1.1.0.2))
Copy the code

Output:

slightlyCopy the code

Gets the month name from the month number

import calendar
import datetime

# Month name from number
print("Month name from number 5:")
month_num = 1
month_abre = datetime.date(2015, month_num, 1).strftime('%b')
month_name = datetime.date(2015, month_num, 1).strftime('%B')
print("Short Name:", month_abre)
print("Full Name:", month_name)

print("\nList of all months from calendar")
# Print list of all months from calendar
for month_val in range(1.13) :print(calendar.month_abbr[month_val], "-", calendar.month_name[month_val])
Copy the code

Output:

Month name from number 5: Short Name: Jan Full Name: January List of all months from calendar Jan - January Feb - February Mar - March Apr - April May - May Jun - June Jul -  July Aug - August Sep - September Oct - October Nov - November Dec - DecemberCopy the code

Gets the start and end dates of a week from a given date

from datetime import datetime, timedelta
 
date_str = '2018-01-14'
date_obj = datetime.strptime(date_str, '%Y-%m-%d')
 
start_of_week = date_obj - timedelta(days=date_obj.weekday())  # Monday
end_of_week = start_of_week + timedelta(days=6)  # Sunday
print(start_of_week)
print(end_of_week)
Copy the code

Output:

2018-01-08 00:00:00
2018-01-14 00:00:00
Copy the code

Find the date of the previous and next Monday based on the current date

import datetime

today = datetime.date.today()
last_monday = today - datetime.timedelta(days=today.weekday())
coming_monday = today + datetime.timedelta(days=-today.weekday(), weeks=1)
print("Today:", today)
print("Last Monday:", last_monday)
print("Coming Monday:", coming_monday)
Copy the code

Output:

Today: 2018-01-21
Last Monday: 2018-01-15
Coming Monday: 2018-01-22
Copy the code

Gets the first and last dates of the current quarter

from datetime import datetime, timedelta

current_date = datetime.now()
current_quarter = round((current_date.month - 1) / 3 + 1)
first_date = datetime(current_date.year, 3 * current_quarter - 2.1)
last_date = datetime(current_date.year, 3 * current_quarter + 1.1)\
    + timedelta(days=-1)

print("First Day of Quarter:", first_date)
print("Last Day of Quarter:", last_date)
Copy the code

Output:

First Day of Quarter: 2018-01-01 00:00:00
Last Day of Quarter: 2018-03-31 00:00:00
Copy the code