【问题标题】:Listings days and hours in a 2D list using python使用 python 在二维列表中列出日期和小时
【发布时间】:2020-02-18 11:18:03
【问题描述】:

我想使用 dateutil 库列出 2 个给定的 inout 日期时间之间的所有日期和时间。

示例: 输入:date_from= 02/16/2020:00:00:00, date_to = 02/17/2020:00:00:00

我想要一个具有以下结构的列表

02/16/2020, 02/16/2020:00:00:00

02/16/2020, 02/16/2020:01:00:00

02/16/2020, 02/16/2020:02:00:00

... till hour 23

02/17/2020, 02/17/2020:00:00:00

02/17/2020, 02/17/2020:01:00:00

02/17/2020, 02/17/2020:02:00:00

.... till hour 23

我尝试了下面的代码,似乎需要更改逻辑。

days = [[], []]
for day in rrule.rrule(rrule.DAILY, dtstart=date_from, until=date_to):
    for hour in rrule.rrule(rrule.HOURLY, dtstart=date_from, until=date_to):
        days.append(str(day))

【问题讨论】:

    标签: python list multidimensional-array python-dateutil rrule


    【解决方案1】:
    from datetime import datetime as dt
    from datetime import timedelta
    
    date_from= '02/16/2020 00:00:00'
    date_to = '02/17/2020 00:00:00'
    
    date_from = dt.strptime(date_from, '%m/%d/%Y %H:%M:%S')
    date_to = dt.strptime(date_to, '%m/%d/%Y %H:%M:%S')
    new_date = date_from
    while new_date < date_to:
        print(new_date)
        new_date = new_date + timedelta(minutes=60)  
    

    输出:

    2020-02-16 00:00:00
    2020-02-16 01:00:00
    2020-02-16 02:00:00
    2020-02-16 03:00:00
    2020-02-16 04:00:00
    2020-02-16 05:00:00
    2020-02-16 06:00:00
    2020-02-16 07:00:00
    2020-02-16 08:00:00
    2020-02-16 09:00:00
    2020-02-16 10:00:00
    2020-02-16 11:00:00
    2020-02-16 12:00:00
    2020-02-16 13:00:00
    2020-02-16 14:00:00
    2020-02-16 15:00:00
    2020-02-16 16:00:00
    2020-02-16 17:00:00
    2020-02-16 18:00:00
    2020-02-16 19:00:00
    2020-02-16 20:00:00
    2020-02-16 21:00:00
    2020-02-16 22:00:00
    2020-02-16 23:00:00
    

    【讨论】:

      【解决方案2】:

      作为日期和日期时间的二维数组:

      from datetime import datetime as dt
      from datetime import timedelta
      
      date_from= '02/16/2020 00:00:00'
      date_to = '02/17/2020 00:00:00'
      
      date_from = dt.strptime(date_from, '%m/%d/%Y %H:%M:%S')
      date_to = dt.strptime(date_to, '%m/%d/%Y %H:%M:%S')
      new_date = date_from
      all_dates = []
      while new_date < date_to:
          date_only = dt.strftime(new_date,'%m/%d/%Y')
          date_and_time = dt.strftime(new_date,'%m/%d/%Y %H:%M:%S')
          all_dates.append([date_only,date_and_time])
          new_date = new_date + timedelta(minutes=60)  
      
      print(all_dates)
      

      输出:

      [['02/16/2020', '02/16/2020 00:00:00'], ['02/16/2020', '02/16/2020 01:00:00'], ['02/16/2020', '02/16/2020 02:00:00'], ['02/16/2020', '02/16/2020 03:00:00'], ['02/16/2020', '02/16/2020 04:00:00'], ['02/16/2020', '02/16/2020 05:00:00'], ['02/16/2020', '02/16/2020 06:00:00'], ['02/16/2020', '02/16/2020 07:00:00'], ['02/16/2020', '02/16/2020 08:00:00'], ['02/16/2020', '02/16/2020 09:00:00'], ['02/16/2020', '02/16/2020 10:00:00'], ['02/16/2020', '02/16/2020 11:00:00'], ['02/16/2020', '02/16/2020 12:00:00'], ['02/16/2020', '02/16/2020 13:00:00'], ['02/16/2020', '02/16/2020 14:00:00'], ['02/16/2020', '02/16/2020 15:00:00'], ['02/16/2020', '02/16/2020 16:00:00'], ['02/16/2020', '02/16/2020 17:00:00'], ['02/16/2020', '02/16/2020 18:00:00'], ['02/16/2020', '02/16/2020 19:00:00'], ['02/16/2020', '02/16/2020 20:00:00'], ['02/16/2020', '02/16/2020 21:00:00'], ['02/16/2020', '02/16/2020 22:00:00'], ['02/16/2020', '02/16/2020 23:00:00']]
      

      这是你想要的吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-10
        • 2018-07-29
        • 2015-07-13
        相关资源
        最近更新 更多