Python中的时间与日期处理技巧分享

 更新时间:2025年04月14日 09:42:31   作者:花小姐的春天  
在Python的世界里,时间也很有个性,格式多种多样、时区坑多如山、转换容易让人头秃……但别担心,今天我们就来聊聊Python中的时间与日期处理,让你从时间小白变成时间大师,需要的朋友可以参考下

时间这东西,最神奇的地方就在于——它从来不等人!就像你说好5分钟后起床,结果一睁眼发现已经是中午了;或者老板让你统计个Excel报表,你想着"一会儿就搞定",结果时间一晃,天都黑了。

在Python的世界里,时间也很有个性,格式多种多样、时区坑多如山、转换容易让人头秃,但别担心,今天我们就来聊聊Python中的时间与日期处理,让你从时间小白变成时间大师!

1. 先来个简单的“时间基础操作”

如果你是Python初学者,那你肯定会用到datetime模块。让我们从最简单的创建和输出时间开始。

获取当前时间

import datetime
now = datetime.datetime.now()
print(now)

这段代码简单明了,datetime.now()会返回当前的日期和时间。例如:

2025-03-19 12:30:45.678901

当然,你也可以自定义格式来输出时间。

格式化输出

formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_time)

这段代码使用strftime方法来格式化日期和时间。常见的格式化代码包括:

格式符含义
%Y四位年份(2025)
%m月份(01-12)
%d日期(01-31)
%H小时(00-23)
%M分钟(00-59)
%S秒(00-59)

输出结果类似:

2025-03-19 12:30:45

这是不是比原始的时间输出看起来更加整洁了?

2. 从字符串转换为日期对象

假如你从文件或者用户输入中获取到一个时间字符串,那该怎么把它转成Python中的日期对象呢?别担心,这个问题简单得很,strptime方法来帮忙。

time_str = "2025-03-19 12:30:45"
time_obj = datetime.datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")
print(time_obj)

这里,strptime方法会根据你提供的格式化字符串,将时间字符串转化为一个datetime对象。转换后的结果会是一个标准的日期时间对象,可以继续进行各种操作。

3. 时间加减操作

获取未来或者过去的时间

有时候你可能需要获取一个日期的前几天或后几天的时间。例如,假设今天是2025年3月19日,你想知道7天后的日期。通过timedelta,这可以轻松做到。

today = datetime.datetime.now()
delta = datetime.timedelta(days=7)
future_date = today + delta
print(future_date)

输出结果:

2025-03-26 12:30:45.678901

同样,你也可以做日期的减法,得到过去的某个日期。

past_date = today - delta
print(past_date)

输出结果:

2025-03-12 12:30:45.678901

4. 处理时区和夏令时

大家可能知道,处理时区有点麻烦,因为不同的时区之间会有时差。而且,夏令时(DST)会让你头疼不已。比如说,北京时间与纽约时间的差异就会随着夏令时的变化而有所不同。怎么处理这些问题呢?答案就是pytz库。

安装pytz库

pip install pytz

设置时区

import pytz
now = datetime.datetime.now(pytz.timezone("Asia/Shanghai"))
print(now)

ny_time = datetime.datetime.now(pytz.timezone("America/New_York"))
print(ny_time)

通过pytz,你可以设置时区,并且正确处理夏令时的转换。如果你正在做涉及全球用户的应用,这个库真的能帮你避免不少麻烦。

5. 处理日期范围

有时候我们需要生成一个日期范围,比如从2025年1月1日到2025年1月10日。这个可以用date_range来轻松搞定。

import pandas as pd
date_range = pd.date_range(start="2025-01-01", end="2025-01-10")
print(date_range)

输出的结果是一个日期范围:

DatetimeIndex(['2025-01-01', '2025-01-02', '2025-01-03', '2025-01-04',
               '2025-01-05', '2025-01-06', '2025-01-07', '2025-01-08',
               '2025-01-09', '2025-01-10'],
              dtype='datetime64[ns]', freq='D')

非常适合用来生成日志时间戳、安排任务等。

6. 不常见但实用的时间操作

获取一周的第几天

now = datetime.datetime.now()
weekday = now.weekday()  # 周一是0,周日是6
print(f"今天是星期{weekday + 1}")

这段代码会返回今天是星期几,输出类似“今天是星期3”。

获取月份的天数

import calendar
year, month = 2025, 2
days_in_month = calendar.monthrange(year, month)[1]
print(f"{year}年{month}月有 {days_in_month} 天")

这段代码会返回某年的某个月有多少天,比如:“2025年2月有 28 天”

获取某个月的第一天和最后一天

from datetime import date
first_day = date(year, month, 1)
last_day = date(year, month, days_in_month)
print(first_day, last_day)

获取当前时间戳

如果你需要一个时间戳(自1970年1月1日以来的秒数),可以使用timestamp()

timestamp = datetime.datetime.now().timestamp()
print(timestamp)

转换为UTC时间

如果你需要将本地时间转为UTC时间:

now_utc = datetime.datetime.now(pytz.utc)
print(now_utc)

判断某年是否是闰年

def is_leap_year(year):
    return calendar.isleap(year)

print(is_leap_year(2024))  # True(闰年)
print(is_leap_year(2025))  # False(平年)

计算两个日期之间的工作日天数

import numpy as np
start_date = datetime.date(2025, 3, 1)
end_date = datetime.date(2025, 3, 10)
workdays = np.busday_count(start_date.strftime('%Y-%m-%d'), end_date.strftime('%Y-%m-%d'))
print(f"工作日天数: {workdays}")

小结

今天,我们通过一些简单又实用的代码,了解了如何在Python中处理时间和日期。虽然时间和日期看起来是一块很基础的内容,但细节处理起来可真是个大坑,尤其是时区、夏令时等问题。所以,掌握这些基本技巧,不仅能让你的代码更精确,还能避免很多因时间错误而引发的麻烦。

以上就是Python中的时间与日期处理技巧分享的详细内容,更多关于Python时间与日期处理的资料请关注脚本之家其它相关文章!

相关文章

  • SVM算法的理解及其Python实现多分类和二分类问题

    SVM算法的理解及其Python实现多分类和二分类问题

    这篇文章主要介绍了SVM算法的理解及其Python实现多分类和二分类问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Python3 全自动更新已安装的模块实现

    Python3 全自动更新已安装的模块实现

    这篇文章主要介绍了Python3 全自动更新已安装的模块实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 详解Python中的魔法函数与量子计算模拟

    详解Python中的魔法函数与量子计算模拟

    这篇文章主要介绍了python的魔法函数和量子计算模拟,我们可以通过一个实际的案例来先审视一下这两个需求是如何被结合起来的,希望对大家有所帮助
    2023-03-03
  • 详谈python在windows中的文件路径问题

    详谈python在windows中的文件路径问题

    下面小编就为大家分享一篇详谈python在windows中的文件路径问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python数据结构之列表和元组的详解

    python数据结构之列表和元组的详解

    这篇文章主要介绍了python数据结构之列表和元组的详解的相关资料,希望通过本文能帮助到大家,让大家彻底理解掌握这部分内容,需要的朋友可以参考下
    2017-09-09
  • pytorch如何对image和label同时进行随机翻转

    pytorch如何对image和label同时进行随机翻转

    这篇文章主要介绍了pytorch如何对image和label同时进行随机翻转问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • python基础之内置函数

    python基础之内置函数

    这篇文章主要介绍了python内置函数,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下
    2021-10-10
  • python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算

    python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算

    这篇文章主要介绍了python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python fileinput模块如何逐行读取多个文件

    Python fileinput模块如何逐行读取多个文件

    这篇文章主要介绍了Python fileinput模块如何逐行读取多个文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Python引用(import)文件夹下的py文件的方法

    Python引用(import)文件夹下的py文件的方法

    这篇文章主要介绍了Python引用(import)文件夹下的py文件的方法,Python中比较特别,导入文件夹下的py文件,则这个目录下必须要有一个__init__.py文件才可,需要的朋友可以参考下
    2014-08-08

最新评论