Python - 日期和时间
大家好,未来的Python巫师们!今天,我们将踏上一段令人兴奋的旅程,探索Python中的日期和时间领域。作为你们友好邻居的计算机老师,我非常激动地引导你们完成这次冒险。所以,拿起你们的虚拟魔杖(键盘),让我们开始吧!
什么是Tick间隔?
在我们开始摆弄日期和时间之前,先来理解一个基本概念:tick间隔。在计算机的世界里,时间通常是以ticks来衡量的。但究竟什么是tick呢?
Tick就像是你电脑的心跳。它是你的电脑时钟能够测量的最小时间单位。在Python中,我们将ticks衡量为自1970年1月1日00:00:00 UTC以来过去的秒数。这个时间点通常被称为"纪元"。
让我们看看如何获取当前的tick值:
import time
ticks = time.time()
print("当前tick值:", ticks)
如果运行这段代码,你会看到一个很大的数字打印出来。这就是自纪元以来过去的秒数。很酷,对吧?
什么是TimeTuple?
现在,让我们来谈谈TimeTuple。这并不是一种新的舞步(尽管它听起来像!),而是Python表示时间的一种方式。
TimeTuple是一个包含9个元素的元组,代表时间的不同方面:
索引 | 属性 | 值 |
---|---|---|
0 | 年 | (例如,2023) |
1 | 月 | 1-12 |
2 | 日 | 1-31 |
3 | 时 | 0-23 |
4 | 分 | 0-59 |
5 | 秒 | 0-61(60和61表示闰秒) |
6 | 工作日 | 0-6(0表示星期一) |
7 | 年中的日 | 1-366 |
8 | DST | -1, 0, 1(夏令时标志) |
别担心,如果这看起来让人不知所措。我们将在课程中使用这些元素,你很快就会熟悉它们!
获取当前时间
让我们从一些简单的事情开始:获取当前时间。Python使用time
模块让这变得非常简单:
import time
current_time = time.localtime()
print("当前时间:", current_time)
当你运行这个时,你会看到一个TimeTuple打印出来。每个数字对应我们刚才看到的表中的一个元素。例如,如果你看到time.struct_time(tm_year=2023, tm_mon=6, tm_mday=15, tm_hour=14, tm_min=30, tm_sec=0, tm_wday=3, tm_yday=166, tm_isdst=0)
,这意味着现在是2023年6月15日下午2:30。
获取格式化的时间
虽然TimeTuples对计算机很有用,但它们对人类并不友好。让我们以更易读的方式格式化我们的时间:
import time
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print("格式化时间:", formatted_time)
这将打印出类似"2023-06-15 14:30:00"的东西。好多了,对吧?%Y
、%m
、%d
等是格式代码,告诉Python如何安排时间元素。就像给Python一个模板,告诉它你希望你的时间看起来是什么样子。
获取一个月的日历
现在,让我们提高一个档次,打印出一个月的完整日历。我们将使用calendar
模块来完成这个任务:
import calendar
year = 2023
month = 6
print(calendar.month(year, month))
这将打印出2023年6月的精美格式化日历。就像在你的Python程序中有一个迷你桌面日历!
time模块
我们已经稍微使用了一下time
模块,但让我们进一步探索它。这个模块提供了各种与时间相关的函数。以下是一些有用的函数:
import time
print("自纪元以来的当前时间(秒):", time.time())
print("当前本地时间:", time.ctime())
print("休眠2秒...")
time.sleep(2)
print("醒来!")
sleep()
函数在你想要程序暂停一段时间时特别有用。就像告诉你的代码快速小憩一下!
calendar模块
我们已经看到了如何打印一个月,但calendar
模块能做的更多:
import calendar
print("2023是闰年吗?", calendar.isleap(2023))
print("2000到2050年间有多少个闰年?", calendar.leapdays(2000, 2050))
print("2023-06-15是星期几?", calendar.weekday(2023, 6, 15))
这些函数帮助你轻松地处理日历和日期。再也不用扳手指头计算闰年了!
Python datetime模块
datetime
模块是Python中时间操作的多功能瑞士军刀。它结合了time
和calendar
模块的功能,并添加了更多特性。
from datetime import datetime, date, time
# 当前日期和时间
now = datetime.now()
print("当前日期和时间:", now)
# 创建一个特定的日期
my_birthday = date(1990, 5, 15)
print("我的生日:", my_birthday)
# 创建一个特定的时间
alarm = time(7, 30, 0)
print("闹钟设定为:", alarm)
使用datetime
,你可以轻松地创建、操作和格式化日期和时间。
Python date对象
datetime
模块中的date
对象让你能够处理日期(年、月、日):
from datetime import date
today = date.today()
print("今天的日期:", today)
print("年:", today.year)
print("月:", today.month)
print("日:", today.day)
这就像有一个智能日历,知道今天是星期几,并能告诉你关于它的所有信息!
Python time对象
同样,time
对象让你能够处理时间(时、分、秒、微秒):
from datetime import time
lunch_time = time(12, 30, 0)
print("午餐时间:", lunch_time)
print("时:", lunch_time.hour)
print("分:", lunch_time.minute)
print("秒:", lunch_time.second)
现在你可以精确地安排你的编程休息时间了!
Python datetime对象
datetime
对象结合了date
和time
,让你完全控制两者:
from datetime import datetime
now = datetime.now()
print("当前日期和时间:", now)
print("当前年:", now.year)
print("当前月:", now.month)
print("当前日:", now.day)
print("当前时:", now.hour)
print("当前分:", now.minute)
print("当前秒:", now.second)
这就像有一个超级功能的表,知道关于当前时刻的所有信息!
Python timedelta对象
最后但同样重要的是,让我们来谈谈timedelta
。这个对象表示一段时间,它对于日期计算非常有用:
from datetime import datetime, timedelta
now = datetime.now()
print("当前日期和时间:", now)
# 加1天
tomorrow = now + timedelta(days=1)
print("明天的这个时候:", tomorrow)
# 减1周
last_week = now - timedelta(weeks=1)
print("上周的这个时候:", last_week)
有了timedelta
,你可以在代码中进行时间旅行!好吧, sort of。你可以轻松地计算未来的和过去的日期,这在许多应用程序中都非常方便。
就这样,我的年轻的Python主义者们!我们已经穿越了Python中日期和时间的奇妙世界。记住,熟能生巧,所以不要犹豫,尽情地实验这些概念。在你意识到之前,你将能够像一个真正的编码时间领主一样操纵时间!
Credits: Image by storyset