Как получить мин, секунды и миллисекунды от datetime.now () в Python? - PullRequest
16 голосов
/ 22 марта 2012
>>> a = str(datetime.now())
>>> a
'2012-03-22 11:16:11.343000'

Мне нужно получить такую ​​строку: '16:11.34'.

Должно быть как можно более компактным.

Или я должен вместо этого использовать time ()?Как мне это получить?

Ответы [ 7 ]

28 голосов
/ 22 марта 2012

А как же:

datetime.now().strftime('%M:%S.%f')[:-4]

Я не уверен, что вы подразумеваете под "Миллисекундами только 2 цифры", но это должно держать его до 2 десятичных знаков. Может быть более элегантный способ, манипулируя строкой формата strftime, чтобы также снизить точность - я не совсем уверен.

EDIT

Если модификатор %f не работает для вас, вы можете попробовать что-то вроде:

now=datetime.now()
string_i_want=('%02d:%02d.%d'%(now.minute,now.second,now.microsecond))[:-4]

Опять же, я предполагаю, что вы просто хотите урезать точность.

5 голосов
/ 23 марта 2012

Это решение очень похоже на решение, предоставляемое @ gdw2, только в том, что форматирование строк выполнено правильно, чтобы соответствовать тому, что вы просили - «Должно быть как можно компактнее»

>>> import datetime
>>> a = datetime.datetime.now()
>>> "%s:%s.%s" % (a.minute, a.second, str(a.microsecond)[:2])
'31:45.57'
2 голосов
/ 27 марта 2017
import datetime from datetime

now = datetime.now()

print "%0.2d:%0.2d:%0.2d" % (now.hour, now.minute, now.second)

Вы можете сделать то же самое с днем ​​и месяцем и т. Д.

2 голосов
/ 23 марта 2012

Другое похожее решение:

>>> a=datetime.now()
>>> "%s:%s.%s" % (a.hour, a.minute, a.microsecond)
'14:28.971209'

Да, я знаю, что форматирование строки не получилось идеальным.

1 голос
/ 21 января 2017

Извините, что открываю старую ветку, но я пишу на всякий случай, если это кому-нибудь поможет.Это кажется самым простым способом сделать это в Python 3.

from datetime import datetime

Date = str(datetime.now())[:10]
Hour = str(datetime.now())[11:13]
Minute = str(datetime.now())[14:16]
Second = str(datetime.now())[17:19]
Millisecond = str(datetime.now())[20:]

Если вам нужны значения как числа, просто приведите их как int, например

Hour = int(str(datetime.now())[11:13])
0 голосов
/ 31 октября 2018

, если вы хотите, чтобы ваш datetime.now() точный до минуты, вы можете использовать

datetime.strptime(datetime.now().strftime('%Y-%m-%d %H:%M'), '%Y-%m-%d %H:%M')

аналогично за час это будет

datetime.strptime(datetime.now().strftime('%Y-%m-%d %H'), '%Y-%m-%d %H')

Это что-то вроде хака, если у кого-то есть лучшее решение, я весь в ушах

0 голосов
/ 01 августа 2013

time.second очень помогает поставить это на вершину вашего питона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...