如何在Python中使用毫秒而不是微秒的日期时间?

4

客户指定使用DateTime以格式2021-06-22T11:17:09.465Z存储日期,到目前为止,我只能获得字符串日期,因为如果我想保留毫秒,它会将其保存为2021-06-22T11:17:09.465000

有没有可能强制DateTime使用毫秒而不是微秒?我知道格式中的%f表示微秒,但我尝试了我所能想到的所有方法来减少这3个小数位,同时保持DateTime,但都没有结果。


2
根据我在其他答案中看到的评论,您需要展示一下您迄今为止所尝试过的内容,因为目前存在很多混淆。评论结束。 - ZF007
4个回答

4

谢谢您的建议,不幸的是isoformat返回一个字符串,而我需要一个完整的日期时间对象。 - Javier Romero.
我感到困惑。使用DateTime对象,您可以获取任何所需精度的ISO表示形式。您说的是将字符串解析为DateTime对象吗? - Florin C.
@JavierRomero。- 通常,您会使用datetime进行内部表示,包括微秒(包括额外的000);并且所需的格式为输入和输出,作为字符串,并具有所需的精度。 - Jiří Baum

2
我猜你正在寻找这个?还可以看看我的一般评论。在[: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

1

像这样的东西是可以工作的:

from datetime import datetime
dt = datetime.now()
print(f"{dt:%Y/%m/%dT%H:%M:%S}.{f'{dt:%f}'[:3]}")

希望我能帮上忙。


1
谢谢,但那会得到一个字符串,我需要一个日期时间对象。 - Javier Romero.

0

你可以将纳秒除以1000000000得到秒数,除以1000000得到毫秒数。

以下是一些获取纳秒的代码:

tim = time.time_ns()

然后,您可以将此输出与其余格式组合。可能不是最干净的解决方案,但应该可以工作。


1
注意:除以1_000_000可能会失去精度。浮点数具有15位精度。 - Giacomo Catenazzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接