如何计算与我的不和谐相关的成员的时间
Posted
技术标签:
【中文标题】如何计算与我的不和谐相关的成员的时间【英文标题】:How to count time for members connected to my discord 【发布时间】:2021-05-24 01:43:42 【问题描述】:我目前正在尝试使用 python 中的 discord bot 计算我的 discord 的活跃成员的时间。我将成员名称和 timedelta 写入文件。 我的问题是如何从文件中读取这个 timedelta?我知道 datetime.datetime 有 strptime 方法,但 datetime.timedelta 没有。 除了切片并将其作为参数传递给 timedelta 构造函数之外还有什么想法吗?
for a in self.members:
if not a.bot:
self.member_timers[a.name] =
self.member_timers[a.name]['Time'] = None
self.member_timers[a.name]['Stop'] = None
self.member_timers[a.name]['Start'] = None
self.read()
def read(self):
lines = []
with open(f'logi', 'r') as f:
lines = f.readlines()
f.close()
print(lines)
line = lines[0].split()
def write(self):
with open(f'logi', 'w') as f:
for mem in self.members:
if not mem.bot and self.member_timers[mem.name]['Time'] != None:
f.write(" \n".format(mem.name, self.member_timers[mem.name]['Time']))
def start_timer(self, member):
if self.member_timers[member.name]['Start'] == None:
self.member_timers[member.name]['Start'] = datetime.datetime.now()
else:
#policz mu czas zeby nie stracic
self.count_time(member.name)
self.member_timers[member.name]['Start'] = datetime.datetime.now()
pass
def stop_timer(self, member):
if self.member_timers[member.name]['Start'] != None:
self.member_timers[member.name]['Stop'] = datetime.datetime.now()
self.count_time(member.name)
def count_time(self, name):
if self.member_timers[name]['Start'] != None and self.member_timers[name]['Stop'] != None:
if self.member_timers[name]['Time'] == None:
self.member_timers[name]['Time'] = self.member_timers[name]['Stop'] - self.member_timers[name]['Start']
else:
self.member_timers[name]['Time'] += self.member_timers[name]['Stop'] - self.member_timers[name]['Start']
self.member_timers[name]['Start'] = None
self.member_timers[name]['Stop'] = None
因此,当从文件读取时,我想为成员创建 timedelta 对象,以便以后比较它是否大于我分配的任何角色 timedelta。
【问题讨论】:
欢迎来到 Stack Overflow。发布问题时的几件事。 1. 向我们展示您的代码。 2. 共享样本数据。 3. 分享预期产出。 4.检查是否已经问过类似的问题。如果是这样,您已经在其他线程中有答案。我建议先做#4。 对于您的问题,您需要先阅读数据。它将读取为字符串。然后使用strptime转换为日期时间 也看看这个帖子...***.com/questions/39250152/… 使用 strptime 可以获得 datetime 对象,我需要 timedelta。 分享样本数据,以便我回答。看起来你想根据时间点做一个时间增量。一旦我有更多信息,可以提供建议 【参考方案1】:我认为您应该考虑存储时间戳而不是存储 timedelta 对象。
您可以使用ts = datetime.datetime.timestamp(datetime.datetime.now())
获取存储在字典中的浮点数(如果您只对秒感兴趣,可以将其转换为整数)。
要阅读它,您可以使用datetime.datetime.fromtimestamp(ts)
,这将为您提供与您在上面创建的时间戳相对应的datetime.datetime
对象
参考资料:
https://docs.python.org/3/library/datetime.html?highlight=timestamp#datetime.datetime.timestamp https://docs.python.org/3/library/datetime.html?highlight=fromtimestamp#datetime.datetime.fromtimestamp
【讨论】:
以上是关于如何计算与我的不和谐相关的成员的时间的主要内容,如果未能解决你的问题,请参考以下文章