gpt4 book ai didi

Python如何检查多个字符串值的不同日期格式

转载 作者:太空宇宙 更新时间:2023-11-04 09:38:09 33 4
gpt4 key购买 nike

我有一组变量(epoch_time,normal_date,date_time,date_time_zone) 可以根据字符串格式随机传递,我正在将它转换成我需要的日期格式( %Y-%m-%d)。我的变量可以是具有纪元值的字符串或具有日期时区的字符串或具有日期时间或仅日期的字符串。我尝试了以下方法,它总是只进入 allowed_date_formats 中的第一项。有人可以建议我更好的方法或帮助我解决问题。

from datetime import datetime
epoch_time='1481883402'
normal_date="2014-09-03"
date_time=str("2014-05-12 00:00:00")
date_time_zone=str("2015-01-20 08:28:16 UTC")
OP_FORMAT="%Y-%m-%d"
ALLOWED_STRING_FORMATS=["%Y-%m-%d %H:%M:%S %Z","%Y-%m-%d %H:%M:%S","%Y-%m-%d"]

def convert_timestamp(date_timestamp=None):
for format in ALLOWED_STRING_FORMATS:
if datetime.strptime(date_timestamp,format):
d=datetime.strptime(date_timestamp,"%Y-%m-%d")
else:
d = datetime.fromtimestamp((float(date_timestamp) / 1000.), tz=None)
return d.strftime(OP_FORMAT)

print(convert_timestamp(normal_date))

我得到的错误是

ValueError: time data '2014-09-03' does not match format '%Y-%m-%d %H:%M:%S %Z'

最佳答案

为此您可以使用 try-except。

def convert_timestamp(date_timestamp, output_format="%Y-%m-%d"):
ALLOWED_STRING_FORMATS=[
"%Y-%m-%d %H:%M:%S %Z",
"%Y-%m-%d %H:%M:%S",
"%Y-%m-%d",
]

for format in ALLOWED_STRING_FORMATS:
try:
d = datetime.strptime(date_timestamp,format):
return d.strftime(output_format)
except ValueError:
pass
try:
# unix epoch timestamp
epoch = int(date_timestamp) / 1000
return datetime.fromtimestamp(epoch).strftime(output_format)
except ValueError:
raise ValueError('The timestamp did not match any of the allowed formats')

关于Python如何检查多个字符串值的不同日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52882549/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com