>>> a = str(datetime.now())
>>> a
'2012-03-22 11:16:11.343000'
Мне нужно получить такую строку: '16:11.34'
.
Должна быть максимально компактной.
Или я должен использовать time() вместо этого? Как это получить?
>>> a = str(datetime.now())
>>> a
'2012-03-22 11:16:11.343000'
Мне нужно получить такую строку: '16:11.34'
.
Должна быть максимально компактной.
Или я должен использовать time() вместо этого? Как это получить?
Как насчет:
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]
Опять же, я предполагаю, что вы просто хотите урезать точность.
Это решение очень похоже на то, что предоставляется @gdw2, только то, что форматирование строк выполняется правильно, чтобы соответствовать тому, что вы просили, - "должно быть как можно более компактным"
>>> import datetime
>>> a = datetime.datetime.now()
>>> "%s:%s.%s" % (a.minute, a.second, str(a.microsecond)[:2])
'31:45.57'
Другое подобное решение:
>>> a=datetime.now()
>>> "%s:%s.%s" % (a.hour, a.minute, a.microsecond)
'14:28.971209'
Да, я знаю, что я не получил форматирование строк.
import datetime from datetime
now = datetime.now()
print "%0.2d:%0.2d:%0.2d" % (now.hour, now.minute, now.second)
Вы можете сделать то же самое с днем и месяцем и т.д.
time.second помогает много положить это в верхней части вашего питона.
Извините, что открылся старый поток, но я отправляю его на всякий случай, если это кому-то помогает. Это, пожалуй, самый простой способ сделать это в 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])