首页 > 解决方案 > 如何在 .strftime 中将日期和月份大写?

问题描述

我有这个 Python 代码,它给了我完整的日期,然后它给了我小写的所有内容,但在这里我发现我可以把 .capitalize ()

而对于大写字母的日期和月份的第一个字母,问题是它只适用于日期,月份的第一个字母仍然是我的字母。

我怎样才能使一天的第一个字母和月份的第一个字母大写?

def nowISO(self):
    """Return the current utc time in ISO8601 timestamp format."""

    return datetime.utcnow().isoformat()

def ISOtoHuman(self, date: str, language: str):
    """Return the provided ISO8601 timestamp in human-readable format."""

    try:
        locale.setlocale(locale.LC_ALL, 'es_MX.UTF-8')
    except locale.Error:
        log.warn(f"Unsupported locale configured, using system default")

    try:
        # Unix-supported zero padding removal
        return datetime.strptime(date, "%Y-%m-%d").strftime("%A, %-d, de %B, del %Y").capitalize()
    except ValueError:
        try:
            # Windows-supported zero padding removal
            return datetime.strptime(date, "%Y-%m-%d").strftime("%A %#d de %B del %Y").capitalize()
        except Exception as e:
            log.error(self, f"Failed to convert to human-readable time, {e}")

当前结果示例:

2020 年 8 月 26 日

标签: python

解决方案


我不知道您的语言环境的默认设置,但您可以尝试

datetime.strptime(date, "%Y-%m-%d").strftime("%A, %-d, de %B, del %Y")

如果返回的小写版本比您可以剪切日期字符串,请将每个部分大写并将它们连接在一起

' '.join( map(lambda s: s.capitalize(), datetime.strptime(date, "%Y-%m-%d").strftime("%A %-d de@@%B del %Y").split('@@') ) )

' '.join( map(lambda s: s.capitalize(), datetime.strptime(date, "%Y-%m-%d").strftime("%A %#d de@@%B del %Y").split('@@') ) )

推荐阅读