文章目录
- 一、Python 日期和时间
- 二、时间元组(struct_time)
- 三、时间日期格式化符号
- 四、Time(时间) 模块
- 五、Calendar(日历)模块
- 六、相关链接
一、Python 日期和时间
Python 提供了多个内置模块来处理日期和时间,其中最常用的是 datetime
模块。这个模块提供了类来操作日期、时间、日期和时间间隔。
以下是一些基本的日期和时间操作:
- 导入模块
from datetime import datetime
- 获取当前日期和时间
now = datetime.now()print(now)
- 格式化日期和时间
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")print(formatted_date)
- 解析字符串为日期时间对象
date_string = "2023-10-23 12:34:56"date_object = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")print(date_object)
- 日期和时间的算术运算
# 假设我们有两个日期date1 = datetime(2023, 10, 23)date2 = datetime(2023, 11, 23)# 计算两个日期之间的天数差delta = date2 - date1print(delta.days)
其他有用的方法
datetime.today()
: 返回当前日期。datetime.utcnow()
: 返回当前的UTC日期和时间。datetime.fromtimestamp(timestamp)
: 从一个时间戳创建一个日期时间对象。datetime.year
,datetime.month
,datetime.day
,datetime.hour
,datetime.minute
,datetime.second
,datetime.microsecond
: 访问日期和时间的各个部分。
二、时间元组(struct_time)
描述 | 属性名 | 值 |
---|---|---|
4位数年 | tm_year | 2008 |
月 | tm_mon | 1 到 12 |
日 | tm_mday | 1 到 31 |
小时 | tm_hour | 0 到 23 |
分钟 | tm_min | 0 到 59 |
秒 | tm_sec | 0 到 61 (60或61 是闰秒) |
一周的第几日 | tm_wday | 0 到 6 (0是周一) |
一年的第几日 | tm_yday | 一年中的第几天,1 到 366 |
夏令时 | tm_isdst | 是否为夏令时,值有:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1 |
三、时间日期格式化符号
符号 | 描述 |
---|---|
%y | 两位数的年份表示(00-99) |
%Y | 四位数的年份表示(000-9999) |
%m | 月份(01-12) |
%d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) |
%I | 12小时制小时数(01-12) |
%M | 分钟数(00=59) |
%S | 秒(00-59) |
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化的月份名称 |
%B | 本地完整的月份名称 |
%c | 本地相应的日期表示和时间表示 |
%j | 年内的一天(001-366) |
%p | 本地A.M.或P.M.的等价符 |
%U | 一年中的星期数(00-53)星期天为星期的开始 |
%w | 星期(0-6),星期天为星期的开始 |
%W | 一年中的星期数(00-53)星期一为星期的开始 |
%x | 本地相应的日期表示 |
%X | 本地相应的时间表示 |
%Z | 当前时区的名称 |
%% | %号本身 |
四、Time(时间) 模块
Python 的 time
模块提供了各种与时间相关的函数。虽然 datetime
模块在处理日期和时间时更为强大和灵活,但 time
模块在处理时间戳和简单的时间操作时仍然很有用。
以下是一些 time
模块的基本用法:
- 导入模块
import time
- 获取当前时间戳
时间戳通常是从某个固定点(通常是1970年1月1日00:00:00 UTC)到现在的秒数。
timestamp = time.time()print(timestamp)
- 将时间戳转换为本地时间
local_time = time.localtime(timestamp)print(local_time)
- 将时间戳转换为格式化字符串
formatted_time = time.ctime(timestamp)print(formatted_time)
- 睡眠(暂停执行)
sleep
函数可以让程序暂停指定的秒数。
time.sleep(5)# 程序将暂停5秒
- 获取当前时间的各个部分
current_time = time.localtime()year = current_time.tm_yearmonth = current_time.tm_monday = current_time.tm_mdayhour = current_time.tm_hourminute = current_time.tm_minsecond = current_time.tm_secprint(f"Year: {year}, Month: {month}, Day: {day}, Hour: {hour}, Minute: {minute}, Second: {second}")
- 将结构化时间转换为时间戳
structured_time = time.struct_time((2023, 10, 23, 12, 34, 56, 0, 0, 0))timestamp_from_structured = time.mktime(structured_time)print(timestamp_from_structured)
- 性能计时
time
模块也可以用来测量代码段的执行时间。
start_time = time.time()# 执行一些代码for i in range(0, 1000000):passend_time = time.time()elapsed_time = end_time - start_timeprint(f"Elapsed time: {elapsed_time} seconds")
需要注意的是,time
模块处理的是时间戳和基于时间的简单操作,而 datetime
模块更适合处理日期和时间的复杂操作和格式化。在大多数情况下,如果你需要处理日期和时间,建议使用 datetime
模块。
五、Calendar(日历)模块
Python 的 calendar
模块提供了用于处理日历相关的功能,包括打印日历、计算周数和月中的某天是周几等。以下是一些 calendar
模块的基本用法:
- 导入模块
import calendar
- 打印当前月份的日历
print(calendar.month(2023, 10))# 打印2023年10月的日历
- 打印一年的日历
print(calendar.calendar(2023))# 打印2023年的日历
- 获取一个月的天数
days_in_month = calendar.monthrange(2023, 10)[1]print(days_in_month)# 输出2023年10月的天数
- 判断某个日期是周几
weekday = calendar.weekday(2023, 10, 23)print(weekday)# 输出0表示周一,1表示周二,以此类推
- 设置周的开始和结束
默认情况下,周一是每周的第一天,周日是最后一天。但你可以更改这些设置。
calendar.setfirstweekday(calendar.SUNDAY)# 设置周日为每周的第一天print(calendar.monthcalendar(2023, 10))# 打印2023年10月的日历,此时周日为每周的第一天
- 获取指定周的月历
week_calendar = calendar.monthcalendar(2023, 10)print(week_calendar[1])# 打印2023年10月的第二周的日历
- 计算两个日期之间的周数
date1 = datetime.date(2023, 10, 1)date2 = datetime.date(2023, 10, 31)weeks_between = (date2 - date1).days // 7print(weeks_between)# 输出两个日期之间的周数
请注意,虽然 calendar
模块提供了一些基本的日历操作功能,但它不像 datetime
模块那样功能丰富和强大。在处理更复杂的日期和时间问题时,通常建议使用 datetime
模块。
六、相关链接
- Python下载安装中心
- Python官网
- Python软件下载
- 「Python系列」Python简介及案例
- 「Python系列」Python基础语法/数据类型
- 「Python系列」Python解释器
- 「Python系列」Python运算符
- 「Python系列」Python数据结构
- 「Python系列」Python元组
- 「Python系列」Python集合
- 「Python系列」Python列表