如何更改日期格式来自" 03-Nov-2016"到2016年11月3日

时间:2016-11-15 05:39:41

标签: python python-2.7

以下是我在2.7中尝试的 python 代码,

def date_format_change():
    DB_date = "03-NOV-2016"
    split2 = DB_date.split('-')
    print split2[0]
    M_date = float(round(split2[0]),2)
    print M_date
    Month = {'JAN': '1', 'FEB': '2', 'MAR': '3', 'APR': '4', 'MAY': '5','JUN': '6', 'JUL': '7', 'AUG': '8', 'SEP': '9',
    'OCT': '10', 'NOV': '11', 'DEC': '12'}
    DB_Month = str(split2[1])
    print DB_Month
    M_Month = int(Month[DB_Month])
    M_year = split2(2)
    print M_year
    Changed_format = str(M_Month) +"/"+ str(M_date)+"/"+ str(M_year)
    print Changed_format

date_format_change()

但我收到错误说:

Traceback (most recent call last):
  File "C:/Users/aannam002c/workspace/Website/Century/views.py", line 17, in <module>
03
    date_format_change()
  File "C:/Users/aannam002c/workspace/Website/Century/views.py", line 5, in date_format_change
    M_date = float(round(split2[0]),2)
TypeError: a float is required

Process finished with exit code 1

任何人都能帮忙解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

以下是您问题的简单解决方案:

from datetime import datetime
DB_date = "03-NOV-2016"
print datetime.strptime(DB_date, '%d-%b-%Y').strftime('%m/%d/%Y')

希望这有帮助。

答案 1 :(得分:1)

float()接受一个参数,你给出了两个,并且日期的浮点类型也不好看。 int 可以胜任。此外,round需要一个数字,而split2[0]是一个字符串。

这可能是你想要的:

def date_format_change():
    DB_date = "03-NOV-2016"
    split2 = DB_date.split('-')
    M_date = int(split2[0])
    Month = {'JAN': '1', 'FEB': '2', 'MAR': '3', 'APR': '4', 'MAY': '5','JUN': '6', 'JUL': '7', 'AUG': '8', 'SEP': '9',
    'OCT': '10', 'NOV': '11', 'DEC': '12'}
    print (M_date)
    DB_Month = split2[1]
    print (DB_Month)
    M_Month = int(Month[DB_Month])
    M_year = split2[2]
    print (M_year)
    Changed_format = str(M_Month) +"/"+ str(M_date)+"/"+ str(M_year)
    print (Changed_format)

date_format_change()

它返回:

3
NOV
2016
11/3/2016

答案 2 :(得分:0)

我特别喜欢dateparser包。它使解析日期的第一步变得非常轻松。只需向它扔一个类似于日期或时间参考的字符串,它就会将它转换为datetime

$ pip install dateparser

安装完成后:

import dateparser
from datetime import datetime

DB_date = "03-NOV-2016"
date = dateparser.parse(DB_date)

print datetime.datetime.strftime(date, '%m/%-d/%Y')

# Output: 11/3/2016