文章目录

  • 一、Python 日期和时间
  • 二、时间元组(struct_time)
  • 三、时间日期格式化符号
  • 四、Time(时间) 模块
  • 五、Calendar(日历)模块
  • 六、相关链接

一、Python 日期和时间

Python 提供了多个内置模块来处理日期和时间,其中最常用的是 datetime 模块。这个模块提供了类来操作日期、时间、日期和时间间隔。

以下是一些基本的日期和时间操作:

  1. 导入模块
from datetime import datetime
  1. 获取当前日期和时间
now = datetime.now()print(now)
  1. 格式化日期和时间
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")print(formatted_date)
  1. 解析字符串为日期时间对象
date_string = "2023-10-23 12:34:56"date_object = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")print(date_object)
  1. 日期和时间的算术运算
# 假设我们有两个日期date1 = datetime(2023, 10, 23)date2 = datetime(2023, 11, 23)# 计算两个日期之间的天数差delta = date2 - date1print(delta.days)
  1. 其他有用的方法

    • 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_year2008
tm_mon1 到 12
tm_mday1 到 31
小时tm_hour0 到 23
分钟tm_min0 到 59
tm_sec0 到 61 (60或61 是闰秒)
一周的第几日tm_wday0 到 6 (0是周一)
一年的第几日tm_yday一年中的第几天,1 到 366
夏令时tm_isdst是否为夏令时,值有:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1

三、时间日期格式化符号

符号描述
%y两位数的年份表示(00-99)
%Y四位数的年份表示(000-9999)
%m月份(01-12)
%d月内中的一天(0-31)
%H24小时制小时数(0-23)
%I12小时制小时数(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 模块的基本用法:

  1. 导入模块
import time
  1. 获取当前时间戳

时间戳通常是从某个固定点(通常是1970年1月1日00:00:00 UTC)到现在的秒数。

timestamp = time.time()print(timestamp)
  1. 将时间戳转换为本地时间
local_time = time.localtime(timestamp)print(local_time)
  1. 将时间戳转换为格式化字符串
formatted_time = time.ctime(timestamp)print(formatted_time)
  1. 睡眠(暂停执行)

sleep 函数可以让程序暂停指定的秒数。

time.sleep(5)# 程序将暂停5秒
  1. 获取当前时间的各个部分
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}")
  1. 将结构化时间转换为时间戳
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)
  1. 性能计时

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 模块的基本用法:

  1. 导入模块
import calendar
  1. 打印当前月份的日历
print(calendar.month(2023, 10))# 打印2023年10月的日历
  1. 打印一年的日历
print(calendar.calendar(2023))# 打印2023年的日历
  1. 获取一个月的天数
days_in_month = calendar.monthrange(2023, 10)[1]print(days_in_month)# 输出2023年10月的天数
  1. 判断某个日期是周几
weekday = calendar.weekday(2023, 10, 23)print(weekday)# 输出0表示周一,1表示周二,以此类推
  1. 设置周的开始和结束

默认情况下,周一是每周的第一天,周日是最后一天。但你可以更改这些设置。

calendar.setfirstweekday(calendar.SUNDAY)# 设置周日为每周的第一天print(calendar.monthcalendar(2023, 10))# 打印2023年10月的日历,此时周日为每周的第一天
  1. 获取指定周的月历
week_calendar = calendar.monthcalendar(2023, 10)print(week_calendar[1])# 打印2023年10月的第二周的日历
  1. 计算两个日期之间的周数
date1 = datetime.date(2023, 10, 1)date2 = datetime.date(2023, 10, 31)weeks_between = (date2 - date1).days // 7print(weeks_between)# 输出两个日期之间的周数

请注意,虽然 calendar 模块提供了一些基本的日历操作功能,但它不像 datetime 模块那样功能丰富和强大。在处理更复杂的日期和时间问题时,通常建议使用 datetime 模块。

六、相关链接

  1. Python下载安装中心
  2. Python官网
  3. Python软件下载
  4. 「Python系列」Python简介及案例
  5. 「Python系列」Python基础语法/数据类型
  6. 「Python系列」Python解释器
  7. 「Python系列」Python运算符
  8. 「Python系列」Python数据结构
  9. 「Python系列」Python元组
  10. 「Python系列」Python集合
  11. 「Python系列」Python列表