将日期从yyyy / mm / dd格式转换为月份名称日期

时间:2016-08-09 06:31:51

标签: python

MONTHS = ['January', 'February', 'Match', 'April', 'May', 'June',
      'July', 'August', 'September', 'October', 'November', 'December']
def date_convert(s):


    y = s[:4]
    m = int(s[5:-3])
    d = s[8:]
    if m < 10:
        nm = int(m[1:])
        month_name = MONTHS[nm - 1]
    else:
        month_name = MONTHS[m - 1]

    result= ??????
    return result


s = '2000/06/24'
r = date_convert(s)
print(r)

我正在研究期末考试(python 3.0 +),我一整天都在做练习。我突然不知道如何将month_name a,y组合在一起作为字符串使用&#39;结果&#39; (结果= ???)。然后将其返回主程序。 这是我需要的结果:将2000/06/24转换为2000年6月24日。我的大脑现在不工作了,请有人帮助我。非常感谢。我不能使用任何bulit-in功能。请帮我把任何东西放在一起作为一个字符串。再次感谢。

3 个答案:

答案 0 :(得分:0)

试试这个:

from datetime import datetime

d = "2000/06/24"
date_obj = datetime.strptime(d, "%Y/%m/%d")
formatted_date = datetime.strftime(date_obj, "%B %d %Y")
print(formatted_date)

因此,您可以将d作为变量传递给您正在使用的函数中的参数。

strptime(): is used to convert the string of the date to a date object.
strftime(): is used to convert the date object to string.

答案 1 :(得分:0)

通常您不会手动解析/重新格式化/转换Python中的日期。 有许多美丽的功能甚至模块。 问题是日期转换过程看起来似乎很简单 很复杂且容易出错。这就是为什么它不是每次都重新实现,而是尽可能多地实现 在Python核心模块中(首先在datetime中)。

使用strptime解析日期,使用strftime格式化日期:

>>> import datetime
>>> s = datetime.datetime.strptime("2000/06/24", "%Y/%m/%d")
>>> print s.strftime('%B %d %Y')

这两个功能都支持特殊的格式化字符,例如%Y%m

%Y  Year with century as a decimal number.
%m  Month as a decimal number [01,12].
%d  Day of the month as a decimal number [01,31].
%B  Locale’s full month name.

您可以在此处找到更多信息:

此外,请检查这个问题,它非常接近你的问题 获得更多答案:

如果是运动, 你必须实现转换功能 在你自己,这也没关系。您的实施几乎是正确的 但是你错过了一些观点:

def date_convert(s):
    "Manual date conversion"

    y = s[:4]
    m = int(s[5:-3])
    d = s[8:]
    month_name = MONTHS[m - 1]
    return "%s %s, %s" % (month_name, d, y) 

您的功能中不需要if。 而且您不需要两次int转换,只需要第一次转换。

你可以更简单地写一遍:

def date_convert(s):
    "Manual date conversion"

    return "%s %s, %s" % (MONTHS[int(s[5:-3])-1], s[8:], s[:4]) 

答案 2 :(得分:0)

MONTHS = ['January', 'February', 'Match', 'April', 'May', 'June',
      'July', 'August', 'September', 'October', 'November', 'December']
def date_convert(s):
    y = s[:4]
    m = int(s[5:-3])
    d = s[8:]
    month_name = MONTHS[m-1]

result= month_name + ' ' + d + ' '  + y
return result
s = '2000/06/24'
r = date_convert(s)
print r

我在python 2中做过更改打印功能