Python标准库datetime之datetime模块用法分析详解

  • Post category:Python

Python标准库datetime之datetime模块用法分析详解

简介

datetime模块是Python内置的日期和时间处理模块,包含四个类:datetime.datedatetime.timedatetime.datetimedatetime.timedelta

datetime.date类表示日期,包含年月日等信息。

datetime.time类表示时间,包含小时、分钟、秒等信息。

datetime.datetime类表示日期和时间,同时包含了年月日、时分秒等信息。

datetime.timedelta类用来表示两个时间之间的差值。

datetime.date类

创建datetime.date实例

有三种方法创建datetime.date实例:

  1. 使用date()函数(函数返回一个指定日期的datetime.date实例):datetime.date(year, month, day)
  2. 使用fromtimestamp()函数(函数返回一个指定时间戳(1970年1月1日UTC以来的秒数)的datetime.date实例):datetime.date.fromtimestamp(timestamp)
  3. 使用today()函数(函数返回当前日期的datetime.date实例):datetime.date.today()

示例:

import datetime

# 创建 datetime.date 实例
date1 = datetime.date(2021, 5, 23)
print(date1)

# 从时间戳创建 datetime.date 实例
timestamp = 1621843200
date2 = datetime.date.fromtimestamp(timestamp)
print(date2)

# 获取当前日期的 datetime.date 实例
today = datetime.date.today()
print(today)

输出:

2021-05-23
2021-05-24
2021-05-25

datetime.date常见方法

  1. today()方法:返回当前日期datetime.date实例
  2. weekday()方法:返回日期是星期几(星期一为0,星期天为6)
  3. strftime()方法:将datetime.date对象格式化输出

示例:

import datetime

# 获取当前日期
today = datetime.date.today()
print(today)

# 获取今天是星期几
weekday = today.weekday()
print(weekday)

# 格式化输出日期
date_str = today.strftime('%Y-%m-%d')
print(date_str)

输出:

2021-05-25
1
2021-05-25

datetime.time类

创建datetime.time实例

有两种方法创建datetime.time实例:

  1. 使用time()函数(函数返回指定时间的datetime.time实例):datetime.time(hour=0, minute=0, second=0, microsecond=0)
  2. 使用fromtimestamp()函数(函数返回指定时间戳(1970年1月1日UTC以来的秒数)的datetime.time实例):datetime.time.fromtimestamp(timestamp)

示例:

import datetime

# 创建 datetime.time 实例
time1 = datetime.time(20, 30, 45)
print(time1)

# 从时间戳创建 datetime.time 实例
timestamp = 1621931071
time2 = datetime.time.fromtimestamp(timestamp)
print(time2)

输出:

20:30:45
12:04:31

datetime.time常见方法

  1. hourminutesecondmicrosecond属性:访问时间的小时、分钟、秒和微秒属性
  2. strftime()方法:将datetime.time对象格式化输出

示例:

import datetime

# 创建 datetime.time 实例
time1 = datetime.time(20, 30, 45)
print(time1)

# 获取时间的小时,分钟和秒属性
hour = time1.hour
minute = time1.minute
second = time1.second
print(hour, minute, second)

# 格式化输出时间
time_str = time1.strftime('%H:%M:%S')
print(time_str)

输出:

20:30:45
20 30 45
20:30:45

datetime.datetime类

创建datetime.datetime实例

有两种方法创建datetime.datetime实例:

  1. 使用datetime()函数(函数返回指定日期和时间的datetime.datetime实例):datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0)
  2. 使用fromtimestamp()函数(函数返回指定时间戳(1970年1月1日UTC以来的秒数)的datetime.datetime实例):datetime.datetime.fromtimestamp(timestamp)

示例:

import datetime

# 创建 datetime.datetime 实例
datetime1 = datetime.datetime(2021, 5, 23, 20, 30, 45)
print(datetime1)

# 从时间戳创建 datetime.datetime 实例
timestamp = 1621913455
datetime2 = datetime.datetime.fromtimestamp(timestamp)
print(datetime2)

输出:

2021-05-23 20:30:45
2021-05-25 02:10:55

datetime.datetime常见方法

  1. today()方法:返回当前日期和时间的datetime.datetime实例
  2. strftime()方法:将datetime.datetime对象格式化输出
  3. replace()方法:更改datetime.datetime实例的某些属性,返回新的datetime.datetime实例

示例:

import datetime

# 获取当前日期和时间
now = datetime.datetime.now()
print(now)

# 格式化输出日期和时间
datetime_str = now.strftime('%Y-%m-%d %H:%M:%S')
print(datetime_str)

# 更改日期和时间中某些属性
new_datetime = now.replace(hour=12, minute=0, second=0)
print(new_datetime)

输出:

2021-05-25 21:22:33.128104
2021-05-25 21:22:33
2021-05-25 12:00:00.128104

datetime.timedelta类

datetime.timedelta类用于表示时间间隔。

创建datetime.timedelta实例

使用timedelta()函数创建datetime.timedelta实例,参数包括days、seconds、microseconds、milliseconds、minutes、hours和weeks。

示例:

import datetime

# 创建 datetime.datetime 实例
datetime1 = datetime.datetime(2021, 5, 23, 20, 30, 45)

# 创建 datetime.timedelta 实例表示 10 天
delta1 = datetime.timedelta(days=10)

# 创建 datetime.timedelta 实例表示 1 小时
delta2 = datetime.timedelta(hours=1)

# 计算新日期和时间
new_datetime1 = datetime1 + delta1
new_datetime2 = datetime1 + delta2

# 输出新日期和时间
print(new_datetime1)
print(new_datetime2)

输出:

2021-06-02 20:30:45
2021-05-23 21:30:45

datetime.timedelta常见属性和方法

  1. days属性:表示时间间隔的天数
  2. seconds属性:表示时间间隔的秒数
  3. microseconds属性:表示时间间隔的微秒数
  4. total_seconds()方法:将时间间隔转换为秒

示例:

import datetime

# 创建 datetime.datetime 实例
datetime1 = datetime.datetime(2021, 5, 23, 20, 30, 45)

# 创建 datetime.timedelta 实例表示 10 天
delta1 = datetime.timedelta(days=10)

# 创建 datetime.timedelta 实例表示 1 小时
delta2 = datetime.timedelta(hours=1)

# 计算新日期和时间
new_datetime1 = datetime1 + delta1
new_datetime2 = datetime1 + delta2

# 计算时间间隔
interval1 = new_datetime1 - datetime1
interval2 = new_datetime2 - datetime1

# 输出时间间隔的天数和秒数
print(interval1.days, interval1.seconds)
print(interval2.days, interval2.seconds)

# 将时间间隔转换为秒
interval_seconds1 = interval1.total_seconds()
interval_seconds2 = interval2.total_seconds()
print(interval_seconds1, interval_seconds2)

输出:

10 0
0 3600
864000.0 3600.0

总结

datetime模块是Python内置的日期和时间处理模块,包含四个类:datetime.datedatetime.timedatetime.datetimedatetime.timedelta。通过本文的介绍,你应该了解到了这四个类的基本用法和常见方法。