首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 高效处理日期与时间的 10 个实用一行代码技巧

时间数据无处不在。从金融交易到传感器日志,现实世界的数据集中,描述时间的数据——比如某一年的日期或精确时刻的时间戳——应用场景数不胜数。毫不意外,Python 自带了大量内置功能和库,可以对包含日期和时间的数据进行各种操作、预处理和分析。本文将展示 10 个常见日期时间任务的 Python 一行代码解决方案,帮助你高效、简洁地处理时间数据。

请注意,以下部分代码需要在文件开头进行如下导入:

from datetime import datetime, date, timedelta

import pandas as pd

import numpy as np

1. 获取当前时间的 ISO 8601 格式时间戳

虽然看起来有些不习惯,但 ISO 8601 时间戳格式因其低歧义性、机器可读性,以及众多现代 API(如 GraphQL 和 RESTful 服务)的支持而极为实用。该标准还能让你的日期时间具备时区感知特性(是不是有点绕口?)。

获取当前时间的 ISO 8601 格式时间戳:

print(datetime.now().isoformat())

输出示例:

2025-05-10T13:31:13.661144

2. 将字符串解析并转换为 DateTime 对象

这是最常见的数据转换需求之一。datetime.strptime()函数(意为“字符串解析为时间”)接受两个参数:待转换的日期字符串和格式模板,用于正确解析字符串中的年、月、日、时等元素。以下示例将字符串 "2025-05-10" 解析为对应的 datetime 对象:

parsed_date = datetime.strptime("2025-05-10", "%Y-%m-%d")

尝试运行parsed_date.day,你会得到 10,即解析日期的天数部分。

3. 给定日期加上(或减去)X 天

可以利用timedelta函数对指定日期或 datetime 对象进行时间加减。该函数可指定天数参数,实现“时间旅行”。例如,将当前日期向前推进 7 天:

print(date.today() + timedelta(days=7))

此时,日期变成了 2025 年 5 月 17 日。

4. 计算两个日期之间的天数差

给定两个 Python 的 date 对象(如某人生日和新年夜),只需相减并访问结果的days属性即可获得天数差:

print((date(2025, 12, 31) - date(2025, 6, 29)).days)

输出结果为:

185

5. 使用 Pandas 生成连续 5 天的日期范围

类似于 Python 的range(n)生成整数序列,功能强大的 Pandas 库可生成从指定日期起的连续日期范围。结果可以轻松转为列表:

print(pd.date_range(start="2025-01-01", periods=5).tolist())

生成的元素为 Pandas 的 Timestamp 对象:

[Timestamp('2025-01-01 00:00:00'), Timestamp('2025-01-02 00:00:00'), Timestamp('2025-01-03 00:00:00'), Timestamp('2025-01-04 00:00:00'), Timestamp('2025-01-05 00:00:00')]

6. 将数据集中的字符串列转换为 datetime 类型

依然是 Pandas。假设有一个 DataFramedf,其中 'date' 列为字符串,一行代码即可将其转换为 datetime 对象:

pd.to_datetime(df['date'])

输出示例:

0   2025-01-01

1   2025-01-02

2   2025-01-03

Name: date, dtype: datetime64[ns]

7. 获取日期对应的星期名称

该技巧常用于 Web 应用等友好界面中,显示具体星期几(如 Monday)。strftime("%A")可以实现:

print(datetime(2025, 5, 10).strftime("%A"))

输出结果为:

Saturday

8. 使用 NumPy 创建按月的日期数组

如需对每日数据按月聚合,可用 NumPy 生成月份级时间标签。例如,从一月到五月:

print(np.arange('2025-01', '2025-06', dtype='datetime64[M]'))

结果为:

['2025-01' '2025-02' '2025-03' '2025-04' '2025-05']

9. 按日期条件筛选 DataFrame 行

对包含日期属性的数据集,可根据日期条件筛选行。例如,筛选日期大于 2025 年 1 月 15 日的数据:

print(df[df['date'] > '2025-01-15'])

10. 从 datetime 对象获取 Unix 时间戳

最后一个例子,获取指定 datetime 对象的 Unix 时间戳(自 1970 年 1 月 1 日起的秒数),适用于高效存储、比较和同步时间数据:

print(int(datetime(2025, 5, 10, 15, 30, 45).timestamp()))

此处时间戳原为 float(如 1746891045.0),已转换为整数以便表示。

通过上述 10 个技巧,你可以高效地在 Python 中进行各种日期与时间的预处理、分析和操作。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O1EnJvfZqjSdbSqp2lz99xhA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券