8.Python 操作方法:在 Python 中处理日期和时间

介绍
使用日期时间 Python 库
显示当前日期和时间
显示当前日期
显示当前时间
计算两个日期之间的差异
计算两次之间的差异
计算两个日期和时间之间的差异
在日期格式之间转换
使用不同时区的日期/时间
结论
参考
介绍
在使用任何编程语言构建解决方案时,使用日期和时间是经常出现的事情。大多数语言,包括 Python,都会有一个内置的库,可用于处理日期和时间。

对于 Python,有一个名为的内置库datetime,可用于简化日期和基于时间的日期的处理。

使用日期时间 Python 库
由于该datetime库是内置于 Python 中的,因此除了要安装 Python 之外,无需安装其他任何东西。让我们看一些如何使用该datetime库的示例。

显示当前日期和时间
首先,让我们获取当前日期和时间:

import datetime

print(f"Current Date & Time: {datetime.datetime.now()}")

输出:

Current Date & Time: 2023-04-22 20:04:05.506534

使用该datetime.datetime.now()方法可以提供运行它的系统的当前日期和时间。

默认情况下,日期格式为年-月-日。这称为ISO 8601标准日期格式。

显示当前日期
现在让我们只获取当前日期:

import datetime

print(f"Date: {datetime.datetime.now().date()}")

输出:

Date: 2023-04-22

语法与获取日期和时间非常相似,但添加.date()到末尾将仅显示日期。

显示当前时间
接下来,让我们只获取当前时间:

import datetime

print(f"Time: {datetime.datetime.now().time()}")

输出:

Time: 20:04:05.506567

这与只获取日期基本相同,但不是添加.date()到末尾,.time()而是添加返回时间。

计算两个日期之间的差异
计算两个日期和/或时间之间的差异是经常要做的事情。首先,让我们看一个如何计算两个日期之间的时差的例子:

import datetime

date_one = datetime.date(year=2023, month=4, day=22)
date_two = datetime.date(year=2022, month=3, day=22)

print(f"The time difference is: {date_one - date_two}")

输出:

The time difference is: 396 days, 0:00:00

对于两个日期变量中的每一个,使用该datetime.date()方法指定一个日期,并为每个变量指定年、月和日。

从那里,一个简单地从另一个减去一个来计算出差异。

计算两次之间的差异
现在,让我们看另一个例子,但不是显示两个日期之间的差异,而是显示两个时间之间的差异:

import datetime

time_one = datetime.timedelta(hours = 15, minutes = 52)
time_two = datetime.timedelta(hours = 13, minutes = 58)

print(f"The time difference is: {time_one - time_two}")

输出:

The time difference is: 1:54:00

这与前面的日期示例非常相似,但它使用timedelta()方法来设置时间。使用该time()方法不是一种选择,因为它不允许对其执行数学运算。

计算两个日期和时间之间的差异
为了结束计算两个日期或时间之间的差异,让我们看一个如何计算两个日期和时间之间的差异的示例:

import datetime

date_time_one = datetime.datetime(year = 2023, month = 4, day = 22, 
                                  hour = 11, minute = 52)
date_time_two = datetime.datetime(year = 2022, month = 3, day = 22, 
                                  hour = 13, minute = 58)

print(f"The time difference is: {date_time_one - date_time_two}")

输出:

The time difference is: 395 days, 21:54:00

此方法基本上使用与计算两个日期之间的差异相同的方法,并为小时和分钟传递额外的参数。如果需要,也可以传递秒和毫秒。

在日期格式之间转换
使用不同格式的日期是另一种常见情况。通常使用三种主要的日期格式:

年月日(ISO标准,Python默认格式)
日、月、年(欧洲标准)
月、日、年(美国标准)
使用该datetime库可以轻松地在 Python 中的这些格式之间进行转换。以下示例将展示如何将 ISO 格式转换为欧洲和美国标准格式:

import datetime

current_date = datetime.datetime.now()

print(f"Default Date Format: {current_date.date()}")
print(f"Current Time: {current_date.strftime('%H:%M:%S')}\n")
print(f"U.S.A Date Format: {current_date.strftime('%m/%d/%Y')}")
print(f"European Date Format: {current_date.strftime('%d/%m/%Y')}")

输出:

Default Date Format: 2023-04-22
Current Time: 20:04:05

U.S.A Date Format: 04/22/2023
European Date Format: 22/04/2023

上面的示例将current_date变量设置为当前日期和时间。然后使用该strftime()方法将日期转换为所需的格式。

解释方法中的%m/%d/%Y和 的含义:%d/%m/%Ystrftime()

%m是数字形式的月份。
%d是天。
%Y是全年(例如 2023 年)。
/用作分频器。它可以是任何东西,但最好使用/或-.
如果月份需要是全名而不是数字,请将其从 更改%m为%B。

日期将是April/22/2023或22/April/2023。这种输出格式看起来不太理想,因此将输出格式更改为%B %d, %Y( April 22, 2023) 或%d %B, %Y( 22 April, 2023),这两种格式都是更标准的格式。

使用不同时区的日期/时间
最后但同样重要的是,让我们看一下使用不同时区的情况。

库中有一个用于处理时区的内置方法,但有一个更简单的解决方案,其形式为名为 pytz 的第三方库。

该库未随 Python 一起安装,因此需要使用以下命令安装pip:

pip install pytz

安装后,可以导入它,然后调用它以使用该.all_timezones方法显示库中可用的所有时区。

import datetime
import pytz

print(pytz.all_timezones)

输出太长而无法显示,但它生成的 (Python) 列表中的所有选项都可用于获取日期和时间并将其转换为适当的时区。但是,它不会将日期格式转换为该时区的区域,因此如果需要,则需要手动完成。

以下示例将显示不同地区/大陆的不同时区的多个时区转换:

import datetime
import pytz

# --- Local time:
local_date_time = datetime.datetime.now()
print(f"Local Time: {local_date_time.strftime('%d/%m/%Y, %H:%M:%S')}\n")


# --- Time in Paris, France:
tz_paris = pytz.timezone("Europe/Paris")
paris_date_time = datetime.datetime.now(tz = tz_paris)
print(f"Paris Time: {paris_date_time.strftime('%d/%m/%Y, %H:%M:%S')}\n")


# --- Time in Canberra, Australia:
tz_canberra = pytz.timezone("Australia/Canberra")
canberra_date_time = datetime.datetime.now(tz = tz_canberra)
print(f"Canberra Time: {canberra_date_time.strftime('%d/%m/%Y, %H:%M:%S')}\n")


# --- Time in Washington D.C, U.S.A:
tz_dc = pytz.timezone("US/Eastern")
dc_date_time = datetime.datetime.now(tz = tz_dc)
print(f"Washington D.C Time: {dc_date_time.strftime('%m/%d/%Y, %H:%M:%S')}\n")

输出:

Local Time: 22/04/2023, 20:04:05

Paris Time: 22/04/2023, 21:04:05

Canberra Time: 23/04/2023, 05:04:05

Washington D.C Time: 04/22/2023, 15:04:05

为了回顾代码的作用,让我们以华盛顿特区为例,因为除了本地时间示例和日期格式之外,它们都是一样的。

tz_dc- 这会将变量设置为美国/东部时区。
dc_date_time- 这会正常获取日期和时间,但传递tz = dc_date_time参数会将日期和时间设置为美国/东部时区的日期和时间。
打印语句输出将是美国/东部时区的日期和时间,并采用美国使用的格式该格式可以更改,因为它是手动设置的。
结论
使用日期和时间是 Python(以及其他语言)中经常做的事情。显示的示例是执行的一些最常见的任务。

如果你喜欢我的文章,记得关注获取更多的信息。感谢您的阅读,祝您有美好的一天!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q shen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值