带有毫秒或微秒和时区的Datetime

2024-05-23 18:47:08 发布

您现在位置:Python中文网/ 问答频道 /正文

这是日期所需的表示:

>>> tz = pytz.timezone('US/Central')
>>> datefmt = '%Y-%m-%d %H:%M:%S.%f%z(%Z)'
>>> datetime.now(tz).strftime(datefmt)
'2017-04-27 15:09:59.606921-0500(CDT)'

它的记录方式如下(Linux上的Python 3.6.0):

^{pr2}$

它没有正确地填满微秒。我尝试过将logrecord_format更改为其他一些内容,但是我无法解决这个问题—如何配置记录器以正确的方式显示微秒和时区,以便与strftime输出完全匹配?在


编辑:我可以用偏移量来结算毫秒,即2017-04-27 15:09:59,606-0500(CDT)。有可能吗?logging提供%(msecs)03d指令,但我似乎无法使时区偏移量在毫秒之后出现。在


Tags: datetimelinux方式记录nowtz偏移量us
1条回答
网友
1楼 · 发布于 2024-05-23 18:47:08

就个人而言,我没有将时区集成到日期格式中,而是直接将其添加到日志消息格式中。通常,时区不应该在程序执行期间改变。在

import logging
import time

tz = time.strftime('%z')
fmt = '%(asctime)s' + tz + ' %(levelname)s %(message)s'

logging.basicConfig(format=fmt)

logging.error("This is an error message.")

# 2017-07-28 19:34:53,336+0200 ERROR This is an error message.

相关问题 更多 >