如何将日期YYYY-mm-dd格式化为日,月,日#

时间:2014-01-09 22:04:52

标签: python date

我正在尝试在Python中转换/格式化日期..

目前输出:

  

2014年1月8日

我希望输出为:

  

1月3日星期一

在此处理解文档时遇到问题,请暂停格式化日期?

1 个答案:

答案 0 :(得分:2)

你不能一气呵成。如果您查看strftime() and strptime() Behavior的文档,则会有完整工作日(%A)和月份(%B)的格式代码,但是作为序数的月份没有任何内容

一般情况下,只要你想做strftime无法做的事情,尽可能多地使用它,并将其与显式代码结合起来。像这样:

def ordinal(n):
    if 11 <= n <= 13:
        return '{}th'.format(n)
    if n%10 == 1:
        return '{}st'.format(n)
    elif n%10 == 2:
        return '{}nd'.format(n)
    elif n%10 == 3:
        return '{}rd'.format(n)
    else:
        return '{}th'.format(n)

然后,你可以这样做:

def my_format(dt):
    return '{} {}'.format(dt.strftime('%A, %B'), ordinal(dt.day))

我假设你开始使用datedatetime对象。如果没有,你当然必须先解析它。但这很容易:

datestring = '2014-01-08'
dt = datetime.datetime.strptime(datestring, '%Y-%m-%d')