我需要按以下格式打印(并传递给外部API)当前日期时间:
DD-MM-YYYY:HH:MM:SS:SSS
最后3 SSS
暗示毫秒。我知道如何使用Python的strftime
将当前日期时间打印到微秒,如下面的manage.py shell
Django 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位数)而不是微秒?
答案 0 :(得分: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'