如何在 Python 中将 `
2024-03-05 08:36:15
将 "%%d/%m/%Y"
格式的字符串转换为时间戳
在编程中,时间戳是一个数字,它表示从某个参考点开始经过的时间,通常以秒为单位。在 Python 中,我们可以使用 strptime()
函数将 "%%d/%m/%Y"
格式的字符串转换为时间戳,步骤如下:
1. 使用 strptime()
函数将字符串日期转换为 datetime
对象
strptime()
函数需要两个参数:要转换的字符串日期和一个格式化字符串,用于指定字符串中各个部分的含义。"%d/%m/%Y"
格式化字符串表示字符串由以下部分组成:
%d
:日期(1-31)%m
:月份(1-12)%Y
:年份(完整的四位数年份)
例如,要将字符串日期 "01/12/2011"
转换为 datetime
对象,我们可以使用以下代码:
import datetime
date_str = "01/12/2011"
date_obj = datetime.datetime.strptime(date_str, '%d/%m/%Y')
2. 使用 timestamp()
方法从 datetime
对象获取时间戳
datetime
对象具有一个 timestamp()
方法,可返回自纪元以来经过的秒数,即时间戳。我们可以使用以下代码从 date_obj
中获取时间戳:
timestamp = date_obj.timestamp()
现在,timestamp
变量包含了 "01/12/2011"
字符串日期对应的 Unix 时间戳。
示例
让我们尝试将以下字符串日期转换为时间戳:
- "15/08/2023"
- "29/02/2024"
date_str1 = "15/08/2023"
date_str2 = "29/02/2024"
date_obj1 = datetime.datetime.strptime(date_str1, '%d/%m/%Y')
timestamp1 = date_obj1.timestamp()
date_obj2 = datetime.datetime.strptime(date_str2, '%d/%m/%Y')
timestamp2 = date_obj2.timestamp()
print(timestamp1) # 1660444800.0
print(timestamp2) # 1677913200.0
注意事项
- 对于闰年,
%m
可以取值 2(二月)。 - 如果字符串日期中没有指定时区,则
datetime
对象将使用系统时区。
常见问题解答
1. 如何处理非法日期字符串?
如果字符串日期格式不正确或包含非法日期(例如,"31/02/2021"),strptime()
函数会引发 ValueError
。我们可以使用 try
-except
语句来处理此类异常。
2. 如何获取其他格式的时间戳?
strptime()
函数可以处理各种格式的字符串日期。只需修改格式化字符串以匹配您的日期格式即可。
3. 时间戳是否受到时区影响?
时间戳表示自纪元以来经过的秒数,不受时区影响。但是,如果 datetime
对象具有时区信息,则时间戳可能会受到时区转换的影响。
4. 如何从时间戳转换回日期字符串?
可以使用 datetime.datetime.fromtimestamp()
函数将时间戳转换为 datetime
对象,然后使用 strftime()
函数将其转换为所需的日期字符串格式。
5. 有没有其他方法可以将字符串日期转换为时间戳?
除了 strptime()
函数,还有其他方法可以将字符串日期转换为时间戳,例如使用正则表达式或第三方库(如 dateutil
)。