日期格式化为月大写

时间:2018-06-22 18:58:29

标签: python python-3.x strftime

我设法知道了日期

import datetime
getDate = datetime.date.today()
print(getDate.strftime("%Y-%B-%d"))

输出为2018-June-23

但是我想这样格式化输出:2018-JUNE-23(月份是大写)

3 个答案:

答案 0 :(得分:5)

要直接在格式字符串中执行此操作,请在月份(^)前面加上carrot

>>> getDate = datetime.date.today()
>>> print(getDate.strftime("%Y-%^B-%d"))
2018-JUNE-22

注意:如果平台strftime上具有glibc扩展(或等效功能),则此方法有效。您可以通过致电man strftime进行检查。如果它在您的平台上不起作用,或者您需要保证行为是跨平台的,则宁愿使用str.upper作为shown in the other answer来在此处进行额外的功能调用。

答案 1 :(得分:4)

只需使用.upper()

print(getDate.strftime("%Y-%B-%d").upper())

答案 2 :(得分:-3)

要在wim上添加答案,以使其跨平台,在所有平台上执行此操作最准确的方法是使用附加包装器。

Python 3+的示例包装器将使用格式字符串:

import datetime

class dWrapper:
    def __init__(self, date):
        self.date = date

    def __format__(self, spec):
        caps = False
        if '^' in spec:
            caps = True
            spec = spec.replace('^', '')
        out = self.date.strftime(spec)
        if caps:
            out = out.upper()
        return out

    def __getattr__(self, key):
        return getattr(self.date, key)

def parse(s, d):
    return s.format(dWrapper(d))

d = datetime.datetime.now()
print(parse("To Upper doesn't work always {0:%d} of {0:%^B}, year {0:%Y}", d))