猿问

获取重复时间的日期时间对象列表

问题:


我有这个特定时间的列表,例如:


repeat = ['8:15','14:28','19:43','1:21']

现在我正在尝试创建一个函数,该函数将输出一个包含n个日期时间对象的列表,如下所示:


>>> import datetime

>>> 

>>> datetime.datetime.now()

datetime.datetime(2018, 10, 30, 17, 5, 55, 908000) # 2018-10-30 17:05:55

>>> 

>>> output = magic(repeat, how_many=3) # <---

>>> output

[datetime.datetime(2018, 10, 30, 19, 43), datetime.datetime(2018, 10, 31, 1, 21), datetime.datetime(2018, 10, 31, 8, 15)]

>>> 

>>> 

>>> for i in output:

>>>     print( i.strftime("%Y-%m-%d %H:%M:%S") )


2018-10-30 19:43:00

2018-10-31 01:21:00

2018-10-31 08:15:00

我的进度:


所以我用这个解决方案解决了这个问题:


def next(datetime_object, repeat):

    # this function should calculate the next datetime from the datetime_object


    return next_datetime_object


def magic(repeat, how_many=10):

    converted = []

    for i in repeat:

        converted.append( datetime.datetime.strptime(i, '%H:%M') )


    now = datetime.datetime.now()


    output = [ next(now,converted) ]


    while len(output) < how_many:

        output.append(

            next(output[-1] ,converted)

            )


    return output

虽然我在创建这个next()应该计算下一个日期时间对象的函数时遇到了困难。


另外,如果有人有任何其他比我更好的替代解决方案,请与我分享。


编辑 1(只是为了澄清)


输入: repeat = ['8:15','14:28','19:43','1:21']


功能: magic(repeat, how_many=3)


输出: [ datetime.datetime(2018, 10, 30, 19, 43), datetime.datetime(2018, 10, 31, 1, 21), datetime.datetime(2018, 10, 31, 8, 15) ]


注意:输出取决于电流datetime.datetime.now()。在上面的例子中,当前时间是datetime.datetime(2018, 10, 30, 17, 5, 55, 908000)


慕工程0101907
浏览 165回答 2
2回答
随时随地看视频慕课网APP

相关分类

Python
我要回答