Учитывая следующее datetime:
d = datetime.datetime(2018, 10, 9, 8, 19, 16, 999578, tzinfo=dateutil.tz.tzoffset(None, 7200))
D.isoformat () приводит к строке:
'2018-10-09T08:19:16.999578+02:00'
Как я могу получить строку с миллисекундами вместо микросекунд:
'2018-10-09T08:19:16.999+02:00'
Функция strftime () здесь работать не будет:% z возвращает 0200 вместо 02:00 и имеет только% f для получения микросекунд, для миллисекунд нет заполнителя.
2 ответа
Если часовой пояс без двоеточия в порядке, вы можете использовать
d = datetime.datetime(2018, 10, 9, 8, 19, 16, 999578,
tzinfo=dateutil.tz.tzoffset(None, 7200))
s = d.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + d.strftime('%z')
# '2018-10-09T08:19:16.999+0200'
Для двоеточия вам нужно разделить часовой пояс и добавить его туда самостоятельно. %z
не производит Z
ни для UTC.
И Python 3.6 поддерживает timespec='milliseconds'
, так что вы должны это сделать:
try:
datetime.datetime.now().isoformat(timespec='milliseconds')
def milliseconds_timestamp(d):
return d.isoformat(timespec='milliseconds')
except TypeError:
def milliseconds_timestamp(d):
z = d.strftime('%z')
z = z[:3] + ':' + z[3:]
return d.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + z
Учитывая последнее определение в Python 3.6,
>>> milliseconds_timestamp(d) == d.isoformat(timespec='milliseconds')
True
С участием
>>> milliseconds_timestamp(d)
'2018-10-09T08:19:16.999+02:00'
Думаю, вы могли бы сделать это с помощью strftime?
d.strftime("%Y-%m-%dT%H:%M:%S.") + str(d.microsecond//1000)
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.