出于测试目的,我想比较两个日期时间对象。
dt1 = fake.date_time() # assumming 2021-03-25 08:56:12
dt2 = datetime.datetime.strptime('2021-03-25 08:56:12', "%Y-%m-%d %H:%M:%S")
比较失败,因为我尝试将日期时间对象与其中包含日期时间对象的元组进行比较。
如果我尝试像这样分配元组 (dt1) 的第一个元素:
dt1 = fake.date_time()[0]
我收到以下错误:
Error directly assign tuple element
但如果我执行以下操作,它会起作用:
dt1 = fake.date_time()
dt1 = dt1[0]
我在这里有什么不明白的地方? :( 为什么 faker 不直接返回日期时间?
感谢您的帮助。
我使用 python 3.7 和 faker 6.6.2。
答案 0 :(得分:0)
如果您检查 Faker date_time
函数源代码,您只会看到一个 datetime.datetime
对象返回:
def date_time(self, tzinfo=None, end_datetime=None):
"""
Get a datetime object for a date between January 1, 1970 and now
:param tzinfo: timezone, instance of datetime.tzinfo subclass
:example DateTime('2005-08-16 20:39:21')
:return datetime
"""
# NOTE: On windows, the lowest value you can get from windows is 86400
# on the first day. Known python issue:
# https://bugs.python.org/issue30684
return datetime(1970, 1, 1, tzinfo=tzinfo) + \
timedelta(seconds=self.unix_time(end_datetime=end_datetime))
我怀疑对 dt1
对象应用了不需要的更改(或者它也可能是调试器错误),正如我在错误中清楚地看到的那样,datetime.datetime
对象不可下标.你会添加完整的代码以供进一步检查吗?
答案 1 :(得分:0)
当我准备在这里传递整个代码时,我发现了这个问题。
我从字典定义中复制了这一行,最后有逗号...
dt = fake.date_time(),
很明显python创建了一个元组,我只是没看到这个。