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中处理日期和时间的完整指南的详细讨论。掌握这些日期和时间的处理方法,可以在实际工作和项目中更加方便地处理和分析时间序列数据。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/303537.html
微信扫一扫
支付宝扫一扫