Python - 日期时间:使用语言环境打印“%p”时出现问题

Python - Datetime Problem printing '%p' with locale

提问人:Diego 提问时间:11/16/2023 更新时间:11/16/2023 访问量:26

问:

我有一个简单的脚本,可以从 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 之前解析日期,然后在区域设置之后添加它。

难道没有更简单的方法吗?这是日期时间库错误吗?

日期时间 python-datetime

评论

0赞 Barmar 11/16/2023
他们在西班牙使用 AM/PM 吗?也许他们总是使用 24 小时时间。
0赞 Diego 11/16/2023
我很确定他们这样做。无论哪种方式,“%H”都已经存在 24 小时。无论如何,谢谢。将区域设置设置为 es-MX 有效。
0赞 Barmar 11/16/2023
当我尝试执行以下操作时出现错误:locale。错误:不支持的区域设置locale.setlocale(locale.LC_TIME, 'es_ES.utf8')
0赞 Barmar 11/16/2023
不得不改为utf8utf-8
0赞 Barmar 11/16/2023
我无法重现该问题。 返回datetime.datetime.now().strftime(output_format)'05:28:30 PM . 15 de noviembre del 2023'

答: 暂无答案