[python] 날짜 시간을 밀리 초 단위로 문자열로 형식화

datetime날짜에서 밀리 초 단위 의 문자열을 원합니다 . 이 코드는 저에게 일반적이며 코드를 줄이는 방법을 배우고 싶습니다.

from datetime import datetime

timeformatted= str(datetime.utcnow())
semiformatted= timeformatted.replace("-","")
almostformatted= semiformatted.replace(":","")
formatted=almostformatted.replace(".","")
withspacegoaway=formatted.replace(" ","")
formattedstripped=withspacegoaway.strip()
print formattedstripped



답변

밀리 초 (초 뒤에 소수점 이하 3 자리)로 날짜 문자열을 얻으려면 다음을 사용하십시오.

from datetime import datetime

print datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]

>>>> OUTPUT >>>>
2020-05-04 10:18:32.926

참고 : Python3의 print경우 괄호가 필요합니다.

print(datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3])


답변

Python 3.6에서는 다음을 사용할 수 있습니다.

from datetime import datetime
datetime.utcnow().isoformat(sep=' ', timespec='milliseconds')

산출:

'2019-05-10 09:08:53.155'

자세한 내용은 여기 : https://docs.python.org/3/library/datetime.html#datetime.datetime.isoformat


답변

print datetime.utcnow().strftime('%Y%m%d%H%M%S%f')

http://docs.python.org/library/datetime.html#strftime-strptime-behavior


답변

@Cabbi는 일부 시스템에서 마이크로 초 형식 %f이 제공 할 수 있는 문제를 제기 했으므로 "0"마지막 세 문자 만 잘라내는 것은 이식성이 없습니다.

다음 코드는 밀리 초로 타임 스탬프의 형식을 신중하게 지정합니다.

from datetime import datetime
(dt, micro) = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f').split('.')
dt = "%s.%03d" % (dt, int(micro) / 1000)
print dt

출력 예 :

2016-02-26 04:37:53.133

OP가 원하는 정확한 결과를 얻으려면 문장 부호 문자를 제거해야합니다.

from datetime import datetime
(dt, micro) = datetime.utcnow().strftime('%Y%m%d%H%M%S.%f').split('.')
dt = "%s%03d" % (dt, int(micro) / 1000)
print dt

출력 예 :

20160226043839901


답변

아마 이것처럼 :

import datetime
now = datetime.datetime.now()
now.strftime('%Y/%m/%d %H:%M:%S.%f')[:-3]
# [:-3] => Removing the 3 last characters as %f is for microsecs.


답변

나는 당신이 datetime.datetime.strftime ()보다 빠른 것을 찾고 있고 본질적으로 utc 타임 스탬프에서 알파가 아닌 문자를 제거한다는 것을 의미한다고 가정합니다.

접근 방식이 약간 빠르며 문자열을 슬라이싱하면 속도를 높일 수 있다고 생각합니다.

>>> import timeit
>>> t=timeit.Timer('datetime.utcnow().strftime("%Y%m%d%H%M%S%f")','''
... from datetime import datetime''')
>>> t.timeit(number=10000000)
116.15451288223267

>>> def replaceutc(s):
...     return s\
...         .replace('-','') \
...         .replace(':','') \
...         .replace('.','') \
...         .replace(' ','') \
...         .strip()
...
>>> t=timeit.Timer('replaceutc(str(datetime.datetime.utcnow()))','''
... from __main__ import replaceutc
... import datetime''')
>>> t.timeit(number=10000000)
77.96774983406067

>>> def sliceutc(s):
...     return s[:4] + s[5:7] + s[8:10] + s[11:13] + s[14:16] + s[17:19] + s[20:]
...
>>> t=timeit.Timer('sliceutc(str(datetime.utcnow()))','''
... from __main__ import sliceutc
... from datetime import datetime''')
>>> t.timeit(number=10000000)
62.378515005111694


답변

from datetime import datetime
from time import clock

t = datetime.utcnow()
print 't == %s    %s\n\n' % (t,type(t))

n = 100000

te = clock()
for i in xrange(1):
    t_stripped = t.strftime('%Y%m%d%H%M%S%f')
print clock()-te
print t_stripped," t.strftime('%Y%m%d%H%M%S%f')"

print

te = clock()
for i in xrange(1):
    t_stripped = str(t).replace('-','').replace(':','').replace('.','').replace(' ','')
print clock()-te
print t_stripped," str(t).replace('-','').replace(':','').replace('.','').replace(' ','')"

print

te = clock()
for i in xrange(n):
    t_stripped = str(t).translate(None,' -:.')
print clock()-te
print t_stripped," str(t).translate(None,' -:.')"

print

te = clock()
for i in xrange(n):
    s = str(t)
    t_stripped = s[:4] + s[5:7] + s[8:10] + s[11:13] + s[14:16] + s[17:19] + s[20:]
print clock()-te
print t_stripped," s[:4] + s[5:7] + s[8:10] + s[11:13] + s[14:16] + s[17:19] + s[20:] "

결과

t == 2011-09-28 21:31:45.562000    <type 'datetime.datetime'>


3.33410112179
20110928212155046000  t.strftime('%Y%m%d%H%M%S%f')

1.17067364707
20110928212130453000 str(t).replace('-','').replace(':','').replace('.','').replace(' ','')

0.658806915404
20110928212130453000 str(t).translate(None,' -:.')

0.645189262881
20110928212130453000 s[:4] + s[5:7] + s[8:10] + s[11:13] + s[14:16] + s[17:19] + s[20:]

의 사용 (번역)슬라이스 같은 시간에 메소드 실행이
) (번역 장점이 선물 한 줄에 사용할 수있을

첫 번째 시간을 기준으로 시간 비교 :

1.000 * t.strftime ( ‘% Y % m % d % H % M % S % f’)

0.351 * str (t) .replace ( ‘-‘, ”). replace ( ‘:’, ”). replace ( ‘.’, ”). replace ( ”, ”)

0.198 * str (t). 번역 (없음, ‘-:.’)

0.194 * s [: 4] + s [5 : 7] + s [8:10] + s [11:13] + s [14:16] + s [17:19] + s [20 :]