提问人:Diego 提问时间:11/16/2023 更新时间:11/16/2023 访问量:26
Python - 日期时间:使用语言环境打印“%p”时出现问题
Python - Datetime Problem printing '%p' with locale
问:
我有一个简单的脚本,可以从 API 获取 UTC 日期时间,然后我尝试将其解析为
"%I:%M:%S %p . %d de %B del %Y"
我在没有设置区域设置的情况下获得了正确的格式(2023 年 11 月 15 日下午 12:35:01)。 但是当我尝试获取西班牙月份时,%p 突然消失了。
def get_time():
locale.setlocale(locale.LC_TIME, 'es_ES.utf8')
sharepoint_api = api.SharePointAPI()
last_time_ran = sharepoint_api.get_last_executed_time()
#Change UTC to local timezone
utc_format = "%Y-%m-%dT%H:%M:%SZ"
utc_time = datetime.strptime(last_time_ran, utc_format)
utc_time = utc_time.replace(tzinfo=pytz.UTC)
local_tz = pytz.timezone("America/Monterrey")
local_time = utc_time.astimezone(local_tz)
# Parse to desired format
output_format = "%I:%M:%S %p . %d de %B del %Y"
formatted_date = local_time.strftime(output_format)
return formatted_date
这打印:
12:35:01 . 15 de Noviembre del 2023
不同的解决方法说我应该使用字典来更改月份,或者在将区域设置设置为获取 PM/AM 之前解析日期,然后在区域设置之后添加它。
难道没有更简单的方法吗?这是日期时间库错误吗?
答: 暂无答案
评论
locale.setlocale(locale.LC_TIME, 'es_ES.utf8')
utf8
utf-8
datetime.datetime.now().strftime(output_format)
'05:28:30 PM . 15 de noviembre del 2023'