Python时间戳与时间字符串导论

81 阅读5分钟

时间戳是自Unix纪元以来的秒数,时间字符串是时间的字符表示。Python的datetime模块可将时间戳转换为时间字符串,并格式化时间。time模块提供时间相关功能,tzinfo函数处理时区转换。

译自:Python: Introduction to Timestamps and Time Strings

作者:Jack Wallen

一个时间戳可以被认为是一个数值记录,它精确地捕捉了某事发生的时间。这些时间戳以自1970年1月1日Unix纪元以来的累积秒数存储。该日期之后的所有内容都根据从起点开始经过的秒数来计算。例如,2025年7月23日将是1753280905 —— 因为这是自纪元以来经过的秒数。

另一方面,时间字符串是代表时间点的字符集合,例如“2025年7月23日”。

这两者截然不同。

使用Python将时间戳转换为时间字符串

大多数人很难知道或计算时间戳。因此,在你的Python脚本或应用程序中使用时间戳会非常具有挑战性。最重要的是,由于时间戳的长度和复杂性,硬编码时间戳并不是一个好的编码实践。

幸运的是,Python内置了将时间戳转换为时间字符串的能力,而无需你先计算当前时间戳。这是通过datetime模块完成的。

datetime模块为你计算当前时间戳,其使用方式如下:

import datetime

current_timestamp = datetime.datetime.now()
print(current_timestamp)

使用 datetime.datetime.now(),Python会自动计算时间戳,然后自动将其转换为时间字符串。例如,刚才运行的输出打印:

2025-07-23 10:39:23.952357

你不必坚持上述格式,因为Python允许你随意格式化时间。这是通过 strtime() 函数实现的,并使用 %Y%m%d%H%D 来实现格式化。

这是一个格式化时间字符串的示例。假设你希望输出包括月、日、年、小时和分钟(这将是 %m-%d-%Y %H:%M)。Python代码如下所示:

from datetime import datetime

timestamp = datetime.now()
formatted_string = timestamp.strftime('%m-%d-%Y %H:%M')
print(formatted_string)

datetime.fromtimestamp() 的语法

还有另一种转换时间的方法,它接受一个时间戳,将其转换为一个datetime对象,然后存储Python的日期时间信息。

其语法如下所示:

from datetime import datetime

timestamp = int(your_timestamp_value)
dt_object = datetime.fromtimestamp(timestamp)

以下是对上述代码的解释:

  • datetime: 这是导入处理日期和时间所需的类Python的内置库的函数。
  • int(your_timestamp_value): 将任何占位符替换为实际的时间数据。这可以是表示时间的字符串(例如,“2025-07-23”)或时间戳数组。
  • datetime.fromtimestamp(timestamp): 这会将数字转换为datetime对象,从而为你提供时间的精确表示。

你可以将 datetime.fromtimestamp() 与时间戳一起使用。当然,要做到这一点,你必须知道确切的时间戳。

假设我们使用2025年7月23日的时间戳,即1753280905。我们如何将它与 timestamp() 一起使用?像这样:

import datetime

timestamp = int(1700845200)
dt_object = datetime.fromtimestamp(timestamp)
print("Timestamp:", dt_object, "Type:", type(dt_object))

使用 datetime.fromtimestamp() 的主要好处是,它可以无缝地创建时间戳的结构化表示,以便可以在你的Python代码块中使用它们。

使用Python Time模块

time模块提供了处理Python中与时间相关函数的必要工具。使用time模块,你可以轻松地获取当前的系统时间,如下所示:

import time

current_time = time.time()
print(f"Current Time: {current_time}")

上述代码的输出将是当前的Unix Epoch,例如:

1753283419.3007143

还有 sleep() 函数,它允许在代码中添加暂停。你可能希望在Python脚本中添加暂停,以便进程以特定的间隔执行,或者在执行时间敏感的操作时执行。以下是 sleep() 函数的示例:

import time

print("Waiting for 5 seconds...")
time.sleep(5)

上面的脚本将打印“Waiting for 5 seconds…”,暂停,然后返回你的提示符。或者,你可以添加以下内容:

import time  # Import 'time' module
print("Waiting for 5 seconds...")
time.sleep(5)

print("Five seconds have passed.")

这将打印“Waiting for five seconds…”,暂停五秒钟,然后打印“Five seconds have passed.”

处理时区

时区为你的代码增加了另一层复杂性。在处理跨越不同区域设置的数据时,你需要管理时区。否则,时间可能不正确,具体取决于代码的运行位置。

使用Python datetime模块,可以使用 tzinfo 函数,该函数允许你使用时区。这是一个例子:

import datetime

from datetime import timezone
now = datetime.datetime.now(timezone.utc)
print(f"Current Time (UTC): {now}")

运行上面的代码,结果如下所示:

Current Time (UTC): 2025-07-23 15:18:54.854103+00:00

你也可以从一个时区转换为另一个时区,如下所示:

import datetime

import pytz

dt = datetime.datetime(2025, 07, 23, 11, 39, 30)
tz = pytz.timezone('America/New_York')
dt = tz.localize(dt)

new_tz = pytz.timezone('America/Los_Angeles')

converted = dt.astimezone(new_tz)

print(converted)

上述代码的输出将是(在当前时间运行):

2025-07-23 08:39:30-07:00

这就是你如何从Python时间戳和时间字符串开始的。