2

我需要按以下格式打印(并传递给外部 API)当前日期时间:

DD-MM-YYYY:HH:MM:SS:SSS

最后 3 表示SSS毫秒。我知道如何使用 Python 将当前日期时间打印到微秒strftime,如下面的manage.py shellDjango shell 会话中所示:

In [1]: from django.utils import timezone

In [2]: timezone.now()
Out[2]: datetime.datetime(2013, 8, 5, 15, 26, 10, 71046, tzinfo=<UTC>)

In [3]: timezone.now().strftime('%d-%m-%Y:%H:%M:%S:%f')
Out[3]: '05-08-2013:15:28:31:647504'

如何打印结束:SSS部分,使上述字符串变为:

'05-08-2013:15:28:31:123'

即显示毫秒(仅使用 3 位数字)而不是微秒?

4

1 回答 1

5

通过将时间戳微秒除以 1000 分别添加毫秒:

tznow = timezone.now()
'{:%d-%m-%Y:%H:%M:%S}.{:03d}'.format(tznow, tznow.microsecond // 1000)

演示:

>>> from django.utils import timezone
>>> tznow = timezone.now()
>>> '{:%d-%m-%Y:%H:%M:%S}.{:03d}'.format(tznow, tznow.microsecond // 1000)
'05-08-2013:15:36:00.339'
于 2013-08-05T15:35:17.427 回答