Как получить min, seconds и milliseconds из datetime.now() в python?

>>> a = str(datetime.now())
>>> a
'2012-03-22 11:16:11.343000'

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

Должна быть максимально компактной.

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

Ответ 1

Как насчет:

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

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

ИЗМЕНИТЬ

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

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

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

Ответ 2

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

>>> import datetime
>>> a = datetime.datetime.now()
>>> "%s:%s.%s" % (a.minute, a.second, str(a.microsecond)[:2])
'31:45.57'

Ответ 3

Другое подобное решение:

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

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

Ответ 4

import datetime from datetime

now = datetime.now()

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

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

Ответ 5

time.second помогает много положить это в верхней части вашего питона.

Ответ 6

Извините, что открылся старый поток, но я отправляю его на всякий случай, если это кому-то помогает. Это, пожалуй, самый простой способ сделать это в 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 e.g

Hour = int(str(datetime.now())[11:13])