Python是一种功能强大的编程语言,在很多领域都有广泛的应用。其中,处理日期和时间也是常见的。Python内置的datetime模块提供了许多处理日期和时间的函数和类,可以灵活地创建、操作日期和时间。本文将从以下几个方面详细讨论如何使用Python来处理日期和时间。
一、日期和时间的格式化
1、使用datetime.strftime(format)方法可以将一个datetime对象转化为字符串,其中format是一个用于定义日期和时间格式的字符串。
from datetime import datetime now = datetime.now() print(now.strftime("%Y-%m-%d %H:%M:%S")) # 2021-06-07 08:45:12
2、strftime()方法中常用的格式化模式如下:
代码 | 含义 |
%a | 星期几的简写 |
%A | 星期几的全名 |
%b | 月份的简写 |
%B | 月份的全名 |
%c | 日期和时间的字符串表示 |
%d | 日,表示为01-31 |
%H | 小时,24小时制,表示为00-23 |
%I | 小时,12小时制,表示为01-12 |
%j | 一年中的第几天,表示为001-366 |
%m | 月份,表示为01-12 |
%M | 分钟,表示为00-59 |
%p | 上午或下午的符号 |
%S | 秒,表示为00-59 |
%U | 一年中的第几周,周日为一周的开始,表示为00-53 |
%w | 星期几的数字表示,周日为0,周六为6 |
%W | 一年中的第几周,周一为一周的开始,表示为00-53 |
%x | 日期的字符串表示 |
%X | 时间的字符串表示 |
%y | 去掉世纪的年份,表示为00-99 |
%Y | 带有世纪的年份 |
%z | UTC时区偏移量,形如+HHMM或-HHMM |
%Z | 时区名称 |
%% | 表示字符“%” |
3、使用strptime(date_string, format)方法可以将一个字符串转化为datetime对象,其中date_string是一个符合指定格式的日期字符串。
from datetime import datetime date_string = "2021-06-07 08:45:12" date_time = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S") print(date_time) # 2021-06-07 08:45:12
二、日期和时间的加减
1、使用timedelta对象可以对日期和时间进行加减操作。
from datetime import datetime, timedelta now = datetime.now() print(now + timedelta(days=1)) # 明天的这个时间 print(now - timedelta(hours=2)) # 两小时前的这个时间
2、timedelta常用的参数如下:
参数 | 含义 |
days | 天数 |
hours | 小时数 |
minutes | 分钟数 |
seconds | 秒数 |
microseconds | 微秒数 |
milliseconds | 毫秒数 |
weeks | 周数 |
三、时区和夏令时
1、使用pytz模块可以处理时区和夏令时。
from datetime import datetime import pytz dt = datetime(2021, 6, 7, 8, 45, 12, tzinfo=pytz.timezone("Asia/Shanghai")) print(dt) # 2021-06-07 08:45:12+08:00 tz = pytz.timezone("America/New_York") dt_newyork = datetime.now(tz) print(dt_newyork) # 2021-06-06 20:48:20.689997-04:00
2、pytz内置了很多时区,可以使用pytz.all_timezones查看。
import pytz print(pytz.all_timezones)
四、计算时间差
1、使用datetime对象的减法可以计算时间差。
from datetime import datetime, timedelta start_time = datetime(2021, 6, 1, 8, 0, 0) end_time = datetime(2021, 6, 7, 8, 45, 12) time_diff = end_time - start_time print(time_diff) # 6 days, 0:45:12
2、输出时间差的总秒数。
print(time_diff.total_seconds()) # 521712.0
五、生成日期和时间序列
1、使用pandas模块的date_range()方法可以生成指定时间段的日期序列。
import pandas as pd dates = pd.date_range(start='2021-06-01', end='2021-06-07') print(dates)
2、使用pandas模块的date_range()方法可以生成指定时间段、固定频率的时间序列。
import pandas as pd timestamps = pd.date_range("2021-06-07", periods=10, freq="H") print(timestamps)
3、常用的时间频率如下:
代码 | 含义 |
B | 每工作日 |
C | 自定义工作日 |
D | 每自然日 |
H | 每小时 |
T | 每分钟 |
S | 每秒 |
L | 每毫秒 |
U | 每微秒 |
六、总结
以上是本文对Python中处理日期和时间的完整指南的详细讨论。掌握这些日期和时间的处理方法,可以在实际工作和项目中更加方便地处理和分析时间序列数据。