【问题标题】:How to convert all date objects from a list into datetime objects如何将列表中的所有日期对象转换为日期时间对象
【发布时间】:2021-12-29 15:28:29
【问题描述】:

我有这个清单:

myList = [datetime.date(2021, 1, 1), datetime.date(2021, 2, 1), datetime.date(2021, 3, 1)]

我想使用循环将列表中的所有date 对象替换为datetime 对象。有什么解决办法吗?

【问题讨论】:

标签: python list date


【解决方案1】:

只需使用datetime 构造函数:

import datetime

l1 = [datetime.date(2021, 1, 1), datetime.date(2021, 2, 1), datetime.date(2021, 3, 1)]
l2 = [
    datetime.datetime(year=d.year, month=d.month, day=d.day)
    for d in l1
]

print(l2)

【讨论】:

    【解决方案2】:

    datetime.datetime.combine 可用于从datetime.datedatetime.time 创建datetime.datetime。通过datetime.time.min 开启新的一天

    import datetime
    myList = [datetime.date(2021, 1, 1), datetime.date(2021, 2, 1), datetime.date(2021, 3, 1)]
    
    result = [datetime.datetime.combine(d, datetime.time.min) for d in myList]
    

    【讨论】:

      【解决方案3】:

      您可以使用help(datetime.date)help(datetime.datetime) 发现date 具有年、月和日属性,并且datetime.datetime 在创建时采用这些值。所以做一个列表理解来做到这一点

      >>> import datetime
      >>> myList = [datetime.date(2021, 1, 1), datetime.date(2021, 2, 1), datetime.date(2021, 3, 1)]
      >>> newList = [datetime.datetime(d.year, d.month, d.day) for d in myList]
      >>> newList
      [datetime.datetime(2021, 1, 1, 0, 0), datetime.datetime(2021, 2, 1, 0, 0), datetime.datetime(2021, 3, 1, 0, 0)]
      

      【讨论】:

        【解决方案4】:
        date_list = []
        for date in myList:
          date_list.append(datetime.datetime(date.year, date.month, date.day))
        

        如果你想使用 for 循环

        【讨论】:

          猜你喜欢
          • 2017-01-08
          • 2014-10-28
          • 2011-12-02
          • 2018-11-03
          • 1970-01-01
          • 2021-02-26
          • 1970-01-01
          • 1970-01-01
          • 2023-04-09
          相关资源
          最近更新 更多