常州行业网站,建设银行网络平台,故宫文创产品设计,北京网站优化方式#x1f4d8; Day 16 #x1f389; 本系列为Python基础学习#xff0c;原稿来源于 30-Days-Of-Python 英文项目#xff0c;大奇主要是对其本地化翻译、逐条验证和补充#xff0c;想通过30天完成正儿八经的系统化实践。此系列适合零基础同学#xff0c;或仅了解Python一点… Day 16 本系列为Python基础学习原稿来源于 30-Days-Of-Python 英文项目大奇主要是对其本地化翻译、逐条验证和补充想通过30天完成正儿八经的系统化实践。此系列适合零基础同学或仅了解Python一点知识但又没有系统学习的使用者。总之如果你想提升自己的Python技能欢迎加入《挑战30天学完Python》 Python datetime
Python内置有 datetime 模块可以用来处理日期和时间。在编程的世界里少不了与时间打交道因此让我们来专门学习一下 datetime 的使用。 import datetimeprint(dir(datetime))
[MAXYEAR, MINYEAR, __builtins__, __cached__, __doc__, __file__, __loader__, __name__, __package__, __spec__, date, datetime, datetime_CAPI, sys, time, timedelta, timezone, tzinfo]使用内置 dir 或 help 命令可以打印某个模块中可用的函数。如你所见在 datetime 模块有很多的方法不过我们将重点关注其中_date_, datetime, time 和 timedelta 这几个。
获取 datetime 信息
from datetime import datetime
now datetime.now()
print(now) # 当前时间 2023-01-07 20:30:55.689393
day now.day
month now.month
year now.year
hour now.hour
minute now.minute
second now.second
timestamp now.timestamp()
print(day, month, year, hour, minute) # 日 月 年 小时 秒 7 1 2023 20 30
print(timestamp, timestamp)
print(f{day}/{month}/{year}, {hour}:{minute}) # 格式化输出时间 7/1/2023, 20:30时间戳或Unix时间戳是UTC时间从1970年1月1日开始的秒数。
使用 strftime 格式化日期输出
不使用任何内置函数方法的情况如果我们想输出想要格式日期我们可能需要这么做
from datetime import datetime
new_year datetime(2023, 1, 21) # 指定日期 2023 除夕
print(new_year) # 2023-01-21 00:00:00 时间不指定默认0点
day new_year.day
month new_year.month
year new_year.year
hour new_year.hour
minute new_year.minute
second new_year.second
print(day, month, year, hour, minute) #日 月 年 时 分 21 1 2023 0 0
print(f{year}-{month}-{day} {hour}:{minute}) # 2023-1-21 0:0然而我们可以使用 strftime 更快速方便对时间进行格式化输出 下面再看一些使用例子
更新详细的 strftime 格式化日期时间方法可以阅读这 strftime.org 网站。
from datetime import datetime
# 获取当前期日和时间
now datetime.now()t now.strftime(%H:%M:%S)
print(time:, t)time_one now.strftime(%Y-%m-%d %H:%M:%S)
# YY-dd-mm H:M:S
print(time one:, time_one)time_two now.strftime(%d/%m/%Y, %H:%M:%S)
# dd/mm/YY H:M:S
print(time two:, time_two)time: 20:45:27
time one: 2023-01-07 20:45:27
time two: 07/01/2023, 20:45:27下面的图片展示了_strftime_ 模块所有格式符号。在代码编程中按需使用。 使用 strptime 将字符转时间
这里有个建议阅读文档 documentation或许它能帮助你更好地理解。
from datetime import datetime
date_string 5 March, 2022
print(date_string , date_string)
date_object datetime.strptime(date_string, %d %B, %Y)
print(date_object , date_object)date_string 5 March, 2022
date_object 2022-03-05 00:00:00使用 datetime 模块内date
from datetime import date
d date(2022, 5, 1)
print(d) # 指定时间 2022-05-01
print(Current date:, d.today()) # 当前时间 2023-01-07# 将今天的时间给予today对象
today date.today()
print(Current year:, today.year) # 2023
print(Current month:, today.month) # 1
print(Current day:, today.day) # 7时间 time 对象
from datetime import time
# time(hour 0, minute 0, second 0)
a time()
print(a , a)
# time(hour, minute 和 second)
b time(10, 30, 50)
print(b , b)
# time(hour, minute 和 second)
c time(hour10, minute30, second50)
print(c , c)
# time(时, 分, 秒, 毫秒)
d time(10, 30, 50, 200555)
print(d , d)输出
a 00:00:00
b 10:30:50
c 10:30:50
d 10:30:50.200555时间差
时间可以直接进行差值运算
today date(year2019, month12, day5)
new_year date(year2020, month1, day1)
time_left_for_newyear new_year - today
print(Time left for new year: , time_left_for_newyear) # Time left for new year: 27 days, 0:00:00t1 datetime(year 2019, month 12, day 5, hour 0, minute 59, second 0)
t2 datetime(year 2020, month 1, day 1, hour 0, minute 0, second 0)
diff t2 - t1
print(Time left for new year:, diff) # Time left for new year: 26 days, 23: 01: 00使用 datetime 模块中 timedelata 方便在日期上做加减指定时间单位的加减。
from datetime import timedelta
t1 timedelta(weeks12, days10, hours4, seconds20)
t2 timedelta(days7, hours5, minutes3, seconds30)
t3 t1 - t2
print(t3 , t3)t3 86 days, 22:56:50这个 timedelata 需要要结合date或datetime类的对象使用
from datetime import timedelta, date
today date.today()
print(today) # 2023-01-07yestoday today timedelta(days-1)
print(yestoday) # 2023-01-06你是如此的努力。你已经在伟大python学习之路上行走了16步了。课后让我们按惯例做些练习吧 第16天练习
使用 datetime 模块分别获取年、月、日、时、分 和 时间戳信息使用 %m/%d/%Y, %H:%M:%S 格式输出当前时间如果时间是 “2023年1月1日”将此字符串时间转成时间类型计算当前时间和元旦那天的时间差计算当前时间距离1970年1月1的时间差或时间戳思考题想想这个 datetime 模块可以实际应用在那些编码场景中呢 CONGRATULATIONS !