日期变换器

时间:2015-11-11 14:49:48

标签: python python-3.x

我真的需要一些关于此代码的帮助。我必须使用输入文件Unit 5 Dates.txt编写代码,其中包含yyyy/mm/dd形式的日期,将所有行读入列表,找到最早和最晚的日期并打印,然后将日期字符串转换为表格July 12, 2014并打印所有日期。

我已编写代码并且工作正常,但我不知道如何将日期转换为November 10, 2015形式。

def main():
    dateList = get_list()
    dateMin = find_min(dateList)
    print(dateMin)
    dateMax = find_max(dateList)
    print(dateMax)
    print ()
    print_dates(dateList)
    #changeDate = date_changer(dateList) 

def get_list():
    infile = open("Unit 5 Dates.txt", 'r')
    dateList = infile.readlines()
    infile.close()
    return dateList

def find_min(dateList):
    dateMin = dateList[0]
    for index in range(len(dateList)):
        dateList[index] = dateList[index].rstrip("\n")
        if dateList[index] < dateMin:
            dateMin = dateList[index]

    return "The earlest date in the file is: " + dateMin

def find_max(dateList):
    dateMax = dateList[0]
    for index in range(len(dateList)):
        if dateList[index] > dateMax:
            dateMax = dateList[index]

    return"The latest date in the file is: " + dateMax


def print_dates(dateList):
    print("This is the list of dates")
    for index in range(len(dateList)):
        print(dateList[index])

main()

你告诉我的是,我已经这样做了,但它没有用。如果我想从txt文件名Unit 5 Dates.txt中读取它已经包含了所有日期,该怎么办?例如,如果你查看我的代码,我创建一个名为get_list的值返回函数,然后我define它并打开Unit 5 dates.txt文件并读取txt中的所有日期文件。

这里是我到目前为止所拥有的。我已经创建了一个名为date_chnage的创建函数,并且我已经定义了该函数。但是,当我运行代码时,它会给我一个错误消息..

def date_changer(dateList):

import datetime as datechanger

infile = open("Unit 5 Dates.txt", 'r')   

print("This is the list of dates")
for index in range(len(dateList)):
    dateList = datechanger.datetime.strptime(datechanger, '%Y/%m/%d').date()
    print (date.strftime("%B %d, %Y")) 

main()

这是给我的错误

File "/Users/mohamedkeita/Library/Mobile Documents/com~apple~CloudDocs/School/2015:2016 School/Python/Unit 5/KeitaM_Unit 5 copy.py", line 18, in main changeDate = date_changer(dateList) File "/Users/mohamedkeita/Library/Mobile Documents/com~apple~CloudDocs/School/2015:2016 School/Python/Unit 5/KeitaM_Unit 5 copy.py", line 70, in date_changer dateList = datechanger.datetime.strptime(datechanger, '%Y/%m/%d').date() TypeError: must be str, not module

1 个答案:

答案 0 :(得分:3)

使用datetime

November 11, 2015
December 07, 1941
July 04, 1776

打印:

>>> max(dates.splitlines(), key=lambda l: dt.datetime.strptime(l, '%Y/%m/%d').date())
'2015/11/11'
>>> min(dates.splitlines(), key=lambda l: dt.datetime.strptime(l, '%Y/%m/%d').date())
'1776/07/04'

您也可以使用日期时间日期最大值和最小值:

dates.splitlines()

虽然我在示例中使用>>> max(dates.splitlines()) '2015/11/11' >>> min(dates.splitlines()) '1776/07/04' ,但这可能是另一个来源 - 例如文件。

如果您将YYYY / MM / DD作为字符串中的数字,您也可以使用lexicographical sorting来确定最小/最大值:

{{1}}

如果您需要转换或验证日期,请使用日期时间。