客户指定使用DateTime以格式2021-06-22T11:17:09.465Z
存储日期,到目前为止,我只能获得字符串日期,因为如果我想保留毫秒,它会将其保存为2021-06-22T11:17:09.465000
。
有没有可能强制DateTime使用毫秒而不是微秒?我知道格式中的%f
表示微秒,但我尝试了我所能想到的所有方法来减少这3个小数位,同时保持DateTime,但都没有结果。
客户指定使用DateTime以格式2021-06-22T11:17:09.465Z
存储日期,到目前为止,我只能获得字符串日期,因为如果我想保留毫秒,它会将其保存为2021-06-22T11:17:09.465000
。
有没有可能强制DateTime使用毫秒而不是微秒?我知道格式中的%f
表示微秒,但我尝试了我所能想到的所有方法来减少这3个小数位,同时保持DateTime,但都没有结果。
我建议使用timespec参数,如Python文档所述https://docs.python.org/3/library/datetime.html#datetime.datetime.isoformat:
>>> from datetime import datetime
>>> datetime.now().isoformat(timespec='minutes')
'2002-12-25T00:00'
>>> dt = datetime(2015, 1, 1, 12, 30, 59, 0)
>>> datetime.now().isoformat(timespec='milliseconds')
'2021-12-02T14:03:57.937'
datetime
进行内部表示,包括微秒(包括额外的000
);并且所需的格式为输入和输出,作为字符串,并具有所需的精度。 - Jiří Baum[:3]
中的变量3可以根据您的喜好进行调整,以获得毫秒到纳秒范围内的零的数量。使用type()
函数显示它是一个DateTime对象。import time
from datetime import datetime
tm = time.time()
print(tm)
dt = str(tm).split('.')
print(dt)
timestamp = float(dt[0] + '.' + dt[1][:3])
dt_object = datetime.fromtimestamp(timestamp)
print(dt_object)
这将打印出例如:
tm : 1638463260.919723
dt : ['1638463260', '919723']
并且
dd_object : 2021-12-02 17:41:00.919000
像这样的东西是可以工作的:
from datetime import datetime
dt = datetime.now()
print(f"{dt:%Y/%m/%dT%H:%M:%S}.{f'{dt:%f}'[:3]}")
希望我能帮上忙。
你可以将纳秒除以1000000000得到秒数,除以1000000得到毫秒数。
以下是一些获取纳秒的代码:
tim = time.time_ns()
然后,您可以将此输出与其余格式组合。可能不是最干净的解决方案,但应该可以工作。