阿里面试会问什么又肝了3天,整理了80个Python DateTime 例子(1),Python大厂技术面试题汇总

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

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

:", 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

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-7fmEaifa-1712357762208)]
[外链图片转存中…(img-khZ79bXv-1712357762209)]



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
[外链图片转存中…(img-v7V8wPnH-1712357762209)]

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值