小尹学python

导航

Python:80个Python DateTime 例子

目录

  1. 使用 time 模块展示当前日期和时间
  2. 将天、小时、分钟转换为秒
  3. 使用 Pandas 获取当前日期和时间
  4. 将字符串转换为日期时间对象
  5. 以毫秒为单位获取当前时间
  6. 以 MST、EST、UTC、GMT 和 HST 获取当前日期时间
  7. 从给定的日期当中获取星期几
  8. 计算两个日期时间对象之间的时差
  9. 将 5 分钟添加到 Unix 时间戳
  10. 在 Python 中遍历一系列日期
  11. 巴黎时间更改为纽约时间
  12. 使用 Python 获得最后7个工作日
  13. 从今天的日期和一个人的生日推算年龄
  14. 获得本月的第一个星期二
  15. 将整数转换为日期对象
  16. 当前日期减去 N 天的天数
  17. 比较两个日期
  18. 从 datetime 对象中提取年份
  19. 在 Python 中找到星期几
  20. 从当前日期获取 7 天前的日期
  21. 将两个日期时间对象之间的差值转换为秒
  22. 获得任何一个月的第三个星期五
  23. 从 Python 中的周数获取日期
  24. 获取特定日期的工作日
  25. 创建一个 15 分钟前的 DateTime
  26. 从特定日期获取周的开始和结束日期
  27. 两个日期之间的差异(以秒为单位)
  28. 以这种格式获取昨天的日期MMDDYY
  29. 从今天的日期获取上周三
  30. 所有可用时区的列表打印
  31. 获取指定开始日期和结束日期之间的日期范围
  32. 毫秒转换为数据
  33. 查找给定日期之后的第一个星期日的日期
  34. 将(Unix)时间戳秒转换为日期和时间字符串
  35. 以月为单位的两个日期之间的差异
  36. 将本地时间字符串转换为 UTC
  37. 获取当月的最后一个星期四
  38. 从特定日期查找一年中的第几周
  39. 从给定日期获取星期几
  40. 用 AM PM 打印当前时间
  41. 获得一个月的最后一天
  42. 从工作日值中获取工作日名称
  43. 将 N 小时数添加到当前日期时间
  44. 从当前日期获取年、月、日、小时、分钟
  45. 获取特定月份和年份的最后一个星期日
  46. 查找特定日期的年份中的哪一天
  47. 查找当前日期是工作日还是周末
  48. 组合date 和 datetime.time 对象
  49. 获得每月的第 5 个星期一
  50. 将日期时间对象转换为日期对象
  51. 获取没有微秒的当前日期时间
  52. 将 N 秒数添加到特定日期时间
  53. 从当前日期获取两位数的月份和日期
  54. 从特定日期获取月份数据的开始和结束日期
  55. 以周为单位的两个日期之间的差异
  56. 将字符串格式的日期转换为 Unix 时间戳
  57. 获取最后一个周日和周六的日期
  58. 检查对象是否属于date 类型
  59. 获取特定日期的周数
  60. 获取 UTC 时间
  61. 获取本周的开始和结束日期
  62. 两个日期之间的差异(以分钟为单位)
  63. 将日期时间对象转换为日期字符串
  64. 获得上周五
  65. 将 3 周添加到任何特定日期
  66. 在其他两个日期之间生成一个随机日期
  67. 查找从今天开始的第一个星期一的日期
  68. 两个日期之间的差异(以天为单位)
  69. 向当前日期添加六个月
  70. 将数据时间对象转换为 Unix(时间戳)
  71. 将年、月、日、时、分、秒的 N 个数字添加到当前日期时间
  72. 获取指定开始日期和结束日期之间的日期范围
  73. 减去 N 个年、月、日、时、分、秒到当前日期时间
  74. 获取指定年份和月份的月份第一天的工作日和月份的天数
  75. 打印特定年份的所有星期一
  76. 打印特定年份的日历
  77. 从月份编号中获取月份名称
  78. 从给定日期获取一周的开始和结束日期
  79. 根据当前日期查找上一个和下一个星期一的日期
  80. 获取当前季度的第一个日期和最后一个日期

1使用 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)))

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

2将天、小时、分钟转换为秒

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))

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

3使用 Pandas 获取当前日期和时间

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)

Output:

2018-01-19 16:08:28.393553
2018-01-19
2018
1
19
16
8
28
394553

4将字符串转换为日期时间对象

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)

Output:

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

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

5以毫秒为单位获取当前时间

import time

milliseconds = int(round(time.time() * 1000))
print(milliseconds)

Output:

1516364270650

6 MSTESTUTCGMT 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))

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 13:06:14.496606+00:00
Time in GMT: 2017-01-19 13:06:14.496606+00:00
Time in HST: 2017-01-19 03:06:14.497606-10:00

7从给定的日期当中获取星期几

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())
Output:

Wednesday
weekday(): 2
isoweekday() 3
Friday
weekday(): 4
isoweekday() 5

8计算两个日期时间对象之间的时差

import datetime
from datetime import timedelta

datetimeFormat = '%Y-%m-%d %H:%M:%S.%f'
date1 = '2016-04-16 10:01:28.585'
date2 = '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)

Output:

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

9 5 分钟添加到 Unix 时间戳

import datetime
import calendar

future = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)
print(calendar.timegm(future.timetuple()))

Output:

1621069619

10 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"))

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
02-07-2020
03-07-2020
04-07-2020

11巴黎时间更改为纽约时间

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)

Output:

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

12使用 Python 获得最后7个工作日

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)

Output:

2021-05-18
2021-05-17
2021-05-14
2021-05-13
2021-05-12

13从今天的日期和一个人的生日推算年龄

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)))

Output:

20

14获得本月的第一个星期二

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')

Output:

2021-05-04

15将整数转换为日期对象

from datetime import datetime

i = 1545730073
timestamp = datetime.fromtimestamp(i)

print(timestamp)
print(type(timestamp))

Output:

2018-12-25 14:57:53

16当前日期减去 N 天的天数

from datetime import datetime, timedelta

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

Output:

2021-05-10 12:59:14.867969

17比较两个日期

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)

Output:

False
True

18 datetime 对象中提取年份

import datetime

year = datetime.date.today().year
print(year)

Output:

2021

19 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)

Output:

2
6
5

20从当前日期获取 7 天前的日期

from datetime import datetime, timedelta

now = datetime.now()

for x in range(7):
    d = now - timedelta(days=x)
    print(d.strftime("%Y-%m-%d"))

Output:

2021-05-18
2021-05-17
2021-05-16
2021-05-15
2021-05-14
2021-05-13
2021-05-12

21将两个日期时间对象之间的差值转换为秒

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)

Output:

6 days, 0:00:00
518400.0

22获得任何一个月的第三个星期五

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')

Output:

2021-05-21

23 Python 中的周数获取日期

import datetime
from dateutil.relativedelta import relativedelta

week = 25
year = 2021
date = datetime.date(year, 1, 1) + relativedelta(weeks=+week)
print(date)

Output:

2021-06-25

24获取特定日期的工作日

import datetime

print(datetime.date(2020, 5, 15).isocalendar()[2])

Output:

5

25创建一个 15 分钟前的 DateTime

import datetime

dt = datetime.datetime.now() - datetime.timedelta(minutes=15)
print(dt)

Output:

2021-05-15 22:25:55.897365

26从特定日期获取周的开始和结束日期

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())

Output:

2012-09-03 00:00:00
2012-09-09 23:59:59

27两个日期之间的差异(以秒为单位)

from datetime import datetime

fmt = '%Y-%m-%d %H:%M:%S'
d1 = datetime.strptime('2020-01-01 17:31:22', fmt)
d2 = datetime.strptime('2020-01-03 17:31:22', fmt)

days_diff = d2 - d1
print(days_diff.days * 24 * 60 * 60)

Output:

172800

28以这种格式获取昨天的日期MMDDYY

from datetime import date, timedelta

yesterday = date.today() - timedelta(days=1)
print(yesterday.strftime('%m%d%y'))

Output:

051421

29从今天的日期获取上周三

from datetime import date
from datetime import timedelta

today = date.today()

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

Output:

2021-05-12

30所有可用时区的列表打印

import pytz

for i in pytz.all_timezones:
    print(i)

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

31获取指定开始日期和结束日期之间的日期范围

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"))

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
02-07-2020
03-07-2020
04-07-2020

32毫秒转换为数据

import datetime

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

Output:

2020-08-04 11:58:05+00:00

33查找给定日期之后的第一个星期日的日期

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)

Output:

2021-05-23

34将(Unix)时间戳秒转换为日期和时间字符串

from datetime import datetime

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

Output:

Saturday, November 08, 2014 09:26:47

35以月为单位的两个日期之间的差异

from datetime import datetime
from dateutil import relativedelta

date1 = datetime.strptime('2014-01-12 12:00:00', '%Y-%m-%d %H:%M:%S')
date2 = datetime.strptime('2021-07-15 12:00:00', '%Y-%m-%d %H:%M:%S')

r = relativedelta.relativedelta(date2, date1)
print(r.months + (12 * r.years))

Output:

90

36将本地时间字符串转换为 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("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)

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

37获取当月的最后一个星期四

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)

Output:

27

38从特定日期查找一年中的第几周

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)

Output:

21
48
3

39从给定日期获取星期几

import datetime
import calendar

dt = datetime.datetime(2021, 4, 25, 23, 24, 55, 173504)
print(calendar.day_name[dt.weekday()])

Output:

Sunday

40 AM PM 打印当前时间

from datetime import datetime

print(datetime.today().strftime("%I:%M %p"))

Output:

10:11 PM

41获得一个月的最后一天

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])

Output:

31
30
29
28

42从工作日值中获取工作日名称

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])

Output:

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

43 N 小时数添加到当前日期时间

from datetime import datetime, timedelta

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

Output:

2021-05-16 07:36:08.189948

44从当前日期获取年、月、日、小时、分钟

import datetime

now = datetime.datetime.now()
print(now.year, now.month, now.day, now.hour, now.minute, now.second)

Output:

2021 5 15 14 27 33

45获取特定月份和年份的最后一个星期日

import calendar

month = calendar.monthcalendar(2021, 2)

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

Output:

28

46查找特定日期的年份中的哪一天

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)

Output:

138
335
21

47查找当前日期是工作日还是周末

import datetime

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

Output:

Weekday

48组合 datetime.date datetime.time 对象

import datetime

d = datetime.datetime.combine(datetime.date(2020, 11, 14),
                              datetime.time(10, 23, 15))

print(d)

Output:

2020-11-14 10:23:15

49获得每月的第 5 个星期一

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')

Output:

2016-02-29

50将日期时间对象转换为日期对象

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)

Output:

2020-12-15 10:15:45.321474
2020-12-15

51获取没有微秒的当前日期时间

from datetime import datetime

print(datetime.now().isoformat(' ', 'seconds'))

Output:

2021-05-15 12:55:45

52 N 秒数添加到特定日期时间

import datetime

a = datetime.datetime(2020, 12, 31, 23, 59, 45)
b = a + datetime.timedelta(seconds=30)

print(a)
print(b)

Output:

2020-12-31 23:59:45
2021-01-01 00:00:15

53从当前日期获取两位数的月份和日期

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)

Output:

05
05
05
05
15
15
15
15

54从特定日期获取月份数据的开始和结束日期

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())

Output:

2012-09-01 00:00:00
2012-09-30 23:59:59

55以周为单位的两个日期之间的差异

from datetime import date

date1 = date(2020, 12, 23)
date2 = date(2021, 5, 11)

days = abs(date1 - date2).days
print(days // 7)

Output:

19

56将字符串格式的日期转换为 Unix 时间戳

import datetime

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

Output:

1621017000.0

57获取最后一个周日和周六的日期

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()))

Output:

Sunday 2021-05-09 13:13:30.057765
Saturday 2021-05-15 13:13:30.058912

58检查对象是否属于 datetime.date 类型

import datetime

x = '2012-9-1'
y = datetime.date(2012, 9, 1)

print(isinstance(x, datetime.date))
print(isinstance(y, datetime.date))

Output:

False
True

59获取特定日期的周数

import datetime

print(datetime.date(2020, 5, 15).isocalendar()[1])

Output:

20

60获取 UTC 时间

from datetime import datetime

dt = datetime.utcnow()
print(dt)

Output:

2021-05-15 17:01:31.008808

61获取本周的开始和结束日期

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())

Output:

2021-05-10 00:00:00
2021-05-16 23:59:59

62两个日期之间的差异(以分钟为单位)

from datetime import datetime

fmt = '%Y-%m-%d %H:%M:%S'
d1 = datetime.strptime('2010-01-01 17:31:22', fmt)
d2 = datetime.strptime('2010-01-03 17:31:22', fmt)

days_diff = d2 - d1
print(days_diff.days * 24 * 60)

Output:

2880

63将日期时间对象转换为日期字符串

import datetime

t = datetime.datetime(2020, 12, 23)
x = t.strftime('%m/%d/%Y')
print(x)

Output:

12/23/2020

64获得上周五

from datetime import date
from datetime import timedelta

today = date.today()

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

Output:

2021-05-14

65 3 周添加到任何特定日期

import pendulum

dt = pendulum.datetime(2012, 2, 15)
dt = dt.add(weeks=3)
print(dt.to_date_string())

Output:

2012-03-07

66在其他两个日期之间生成一个随机日期

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()))

Output:

02/25/2020 08:26 AM

67查找从今天开始的第一个星期一的日期

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)

Output:

2021-05-17 00:00:00

68两个日期之间的差异(以天为单位)

from datetime import date

d1 = date(2019, 8, 18)
d2 = date(2021, 12, 10)

days_diff = d2 - d1
print(days_diff.days)

Output:

845

69向当前日期添加六个月

from datetime import datetime
from dateutil.relativedelta import *

date = datetime.now()
print(date)

date = date + relativedelta(months=+6)
print(date)

Output:

2021-05-15 13:48:52.135612
2021-11-15 13:48:52.135612

70将数据时间对象转换为 Unix(时间戳)

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())))

Output:

Unix Timestamp: 1444452000.0

71将年、月、日、时、分、秒的 N 个数字添加到当前日期时间

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)

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 years: 2023-04-04 18:32:10.192671
Add 6 hours: 2017-04-05 00:32:10.192671
Add 6 mins: 2017-04-04 18:38:10.192671
Add 6 seconds: 2017-04-04 18:32:16.192671

72获取指定开始日期和结束日期之间的日期范围

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"))

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
2016-06-26
2016-06-27
2016-06-28
2016-06-29

73减去 N 个年、月、日、时、分、秒到当前日期时间

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)

Output:

Current Date Time: 2017-04-04 18:36:29.213046
Subtract 6 days: 2017-03-29 18:36:29.213046
Subtract 6 months: 2016-10-04 18:36:29.213046
Subtract 6 years: 2011-04-04 18:36:29.213046
Subtract 6 hours: 2017-04-04 12:36:29.213046
Subtract 6 mins: 2017-04-04 18:30:29.213046
Subtract 6 seconds: 2017-04-04 18:36:23.213046

74获取指定年份和月份的月份第一天的工作日和月份的天数

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()
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])

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

75打印特定年份的所有星期一

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)

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-31

76打印特定年份的日历

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))

Output:

77从月份编号中获取月份名称

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])

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 - December

78从给定日期获取一周的开始和结束日期

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)

Output:

2018-01-08 00:00:00
2018-01-14 00:00:00

79根据当前日期查找上一个和下一个星期一的日期

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)

Output:

Today: 2018-01-21
Last Monday: 2018-01-15
Coming Monday: 2018-01-22

80获取当前季度的第一个日期和最后一个日期

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)

Output:

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

 

posted on 2021-10-26 11:45  小尹学python  阅读(220)  评论(0编辑  收藏  举报