【问题标题】:datetime objects in list列表中的日期时间对象
【发布时间】:2020-11-08 14:34:33
【问题描述】:
#3. add times as field
self.scheduled_transmitions = self.scheduled_transmitions_copy[:]
self.scheduled_transmitions_copy = []
self.datetime_clock = start_datetime
counter = 0
for scheduled_transmition in self.scheduled_transmitions:
    print(self.datetime_clock)
    self.scheduled_transmitions[counter]["datetime"] = self.datetime_clock
    self.datetime_clock = self.datetime_clock+datetime.timedelta(seconds=int(scheduled_transmition["duration_in_seconds"]))
        
    self.scheduled_transmitions_copy.append(self.scheduled_transmitions[counter])
    counter = counter + 1

print("------------")
self.scheduled_transmitions = self.scheduled_transmitions_copy[:]
self.scheduled_transmitions_copy = []

for scheduled_transmition in self.scheduled_transmitions:
    print(scheduled_transmition["datetime"])

    
return 1

up 代码输出错误。

#3. add times as field
self.scheduled_transmitions = self.scheduled_transmitions_copy[:]
self.scheduled_transmitions_copy = []
self.datetime_clock = start_datetime
for scheduled_transmition in self.scheduled_transmitions:
    print(self.datetime_clock)
    entry = {"datetime":self.datetime_clock}
    self.datetime_clock = self.datetime_clock+datetime.timedelta(seconds=int(scheduled_transmition["duration_in_seconds"]))
        
    self.scheduled_transmitions_copy.append(entry)

print("------------")
self.scheduled_transmitions = self.scheduled_transmitions_copy[:]
self.scheduled_transmitions_copy = []

for scheduled_transmition in self.scheduled_transmitions:
    print(scheduled_transmition["datetime"])

    
return 1

但最后一个没有。

为什么?

第一个代码的输出(错误):

2020-11-08 18:05:20.054000
2020-11-08 18:06:48.054000
2020-11-08 18:08:16.054000
2020-11-08 18:09:44.054000
2020-11-08 18:11:12.054000
2020-11-08 18:12:40.054000
2020-11-08 18:14:08.054000
2020-11-08 18:15:36.054000
2020-11-08 18:17:04.054000
2020-11-08 18:18:32.054000
------------
2020-11-08 18:18:32.054000
2020-11-08 18:18:32.054000
2020-11-08 18:18:32.054000
2020-11-08 18:18:32.054000
2020-11-08 18:18:32.054000
2020-11-08 18:18:32.054000
2020-11-08 18:18:32.054000
2020-11-08 18:18:32.054000
2020-11-08 18:18:32.054000
2020-11-08 18:18:32.054000

秒码的输出。

2020-11-08 18:03:13.265000
2020-11-08 18:04:41.265000
2020-11-08 18:06:09.265000
2020-11-08 18:07:37.265000
2020-11-08 18:09:05.265000
2020-11-08 18:10:33.265000
2020-11-08 18:12:01.265000
2020-11-08 18:13:29.265000
2020-11-08 18:14:57.265000
2020-11-08 18:16:25.265000
------------
2020-11-08 18:03:13.265000
2020-11-08 18:04:41.265000
2020-11-08 18:06:09.265000
2020-11-08 18:07:37.265000
2020-11-08 18:09:05.265000
2020-11-08 18:10:33.265000
2020-11-08 18:12:01.265000
2020-11-08 18:13:29.265000
2020-11-08 18:14:57.265000
2020-11-08 18:16:25.265000

【问题讨论】:

  • 您期望第二部分的输出是什么?这看起来像是缺少一段代码,可能类似于 start_datetime = datetime.datetime.now() 的代码,这可能导致第二个输出中的时间戳。
  • @MostlyHarmless 如果您看到最后一个列表输出,则所有日期时间都相同。
  • 请提供可运行的minimal reproducible example
  • @martineau 我试试看。但是对于可运行的示例,没有错误。
  • @martineau schedule_transmitions 列表不会被线程或某处更改。

标签: python list datetime


【解决方案1】:

我不知道为什么会这样,但以下代码有效:

    #3. add times as field
    self.scheduled_transmitions = self.scheduled_transmitions_copy[:]
    self.scheduled_transmitions_copy = []
    self.datetime_clock = start_datetime
    for scheduled_transmition in self.scheduled_transmitions:
        print(self.datetime_clock)
        entry = scheduled_transmition.copy()
        entry["datetime"]=self.datetime_clock
        self.datetime_clock = self.datetime_clock+datetime.timedelta(seconds=int(scheduled_transmition["duration_in_seconds"]))
        
        
        self.scheduled_transmitions_copy.append(entry)
    
    print("------------")
    self.scheduled_transmitions = self.scheduled_transmitions_copy[:]
    self.scheduled_transmitions_copy = []
    
    for scheduled_transmition in self.scheduled_transmitions:
        print(scheduled_transmition["datetime"])
    
        
    return 1

我使用dictionary.copy() 方法复制列表元素(字典)。

【讨论】:

    猜你喜欢
    • 2020-04-07
    • 2021-12-29
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2014-05-26
    相关资源
    最近更新 更多