source

Python에서만 datetime 개체를 날짜 문자열로 변환

lovecheck 2022. 10. 29. 10:08
반응형

Python에서만 datetime 개체를 날짜 문자열로 변환

날짜 문자열을 변환하면datetimePython에서는 오브젝트입니다만, 그 반대로 하고 싶습니다.
나는 가지고 있다

datetime.datetime(2012, 2, 23, 0, 0)

현악기로 변환해서'2/23/2012'.

strftime을 사용하여 날짜 형식을 지정할 수 있습니다.

예.,

import datetime
t = datetime.datetime(2012, 2, 23, 0, 0)
t.strftime('%m/%d/%Y')

결과:

'02/23/2012'

포맷에 대한 자세한 내용은 여기를 참조하십시오.

date그리고.datetime오브젝트(및time또한)는 출력을 지정하기 위한 미니 언어를 지원하며, 다음 두 가지 방법으로 액세스 할 수 있습니다.

예를 들어 다음과 같습니다.

  • dt.strftime('The date is %b %d, %Y')
  • 'The date is {:%b %d, %Y}'.format(dt)
  • f'The date is {dt:%b %d, %Y}'

3가지 경우 모두 출력은 다음과 같습니다.

날짜는 2012년 2월 23일입니다.

완전성을 위해서: 오브젝트의 속성에 직접 액세스 할 수도 있습니다만, 다음의 수치만을 얻을 수 있습니다.

'The date is %s/%s/%s' % (dt.month, dt.day, dt.year)
# The date is 02/23/2012

미니 언어를 배우는 데 걸리는 시간은 가치가 있다.


참고로 미니 언어로 사용되는 코드는 다음과 같습니다.

  • %a요일은 로케일의 약칭입니다.
  • %A주중에는 로케일의 풀네임으로 지정합니다.
  • %w주중에는 10진수(0은 일요일, 6은 토요일)를 지정합니다.
  • %d0 패드의 10진수로서의 요일.
  • %b로케일의 약어 이름으로서의 월입니다.
  • %B로케일의 전체 이름으로서의 월입니다.
  • %m0 패드의 10진수로 된 달. 01, ..., 12
  • %y세기가 없는 해는 0으로 채워진 10진수입니다.00, ..., 99
  • %Y세기를 십진수로 하는 해.1970, 1988, 2001, 2013
  • %H제로 패드의 10진수로서의 시간(24시간 시계).00, ..., 23
  • %I제로 패드의 10진수로서의 시간(12시간 시계). 01, ..., 12
  • %p로케일은 AM 또는 PM과 동일합니다.
  • %M0 패드로 채워진 10진수로서의 분.00, ..., 59
  • %S두 번째 패드는 0으로 채워진 10진수입니다.00, ..., 59
  • %f마이크로초(십진수)는 왼쪽에 0패드가 붙어 있습니다.000000, ..., 999999
  • %zUTC 오프셋은 +HHMM 또는 -HHM(naigive인 경우 공백), +0000, -0400, +1030 형식
  • %Z시간대 이름(순수일 경우 공백), UTC, EST, CST
  • %j제로 패드의 10진수로서의 요일.001, ..., 366
  • %U0 패딩된 10진수로 지정된 해의 주 번호(일요일이 첫 번째).
  • %W10진수로서 년도의 주 번호(월요일이 첫 번째).
  • %c로케일의 적절한 날짜 및 시간 표현.
  • %x로케일의 적절한 날짜 표시.
  • %X로케일은 적절한 시간 표현입니다.
  • %%'%'는 '%'

다른 옵션:

import datetime
now=datetime.datetime.now()
now.isoformat()
# ouptut --> '2016-03-09T08:18:20.860968'

datetime형식을 생략할 수 있습니다.할 수 .datetimestr이치노

In [1]: from datetime import datetime

In [2]: now = datetime.now()

In [3]: str(now)
Out[3]: '2019-04-26 18:03:50.941332'

In [5]: str(now)[:10]
Out[5]: '2019-04-26'

In [6]: str(now)[:19]
Out[6]: '2019-04-26 18:03:50'

지지음음음음음 음 AttributeError가 「」인 None에는 '아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,'None'스트링

In [9]: str(None)[:19]
Out[9]: 'None'

간단한 문자열 포맷 방식을 사용할 수 있습니다.

>>> dt = datetime.datetime(2012, 2, 23, 0, 0)
>>> '{0.month}/{0.day}/{0.year}'.format(dt)
'2/23/2012'
>>> '%s/%s/%s' % (dt.month, dt.day, dt.year)
'2/23/2012'

type-specific formatting 를 사용할 수도 있습니다.

t = datetime.datetime(2012, 2, 23, 0, 0)
"{:%m/%d/%Y}".format(t)

출력:

'02/23/2012'

당신도 시간을 원한다면 그냥 같이 가요.

datetime.datetime.now().__str__()

★★★2019-07-11 19:36:31.118766 for (콘솔에서)

다음과 같이 날짜/시간을 문자열로 쉽게 변환할 수 있습니다.

from datetime import datetime

date_time = datetime(2012, 2, 23, 0, 0)
date = date_time.strftime('%m/%d/%Y')
print("date: %s" % date)

datetime을 문자열로 변환하기 위해 사용할 수 있는 패턴은 다음과 같습니다.

datetime에서 문자열 패턴으로

Python에서 문자열을 datetime으로 변환하고 datetime을 string으로 변환하는 방법에 대한 이 문서 또는 공식 문서를 참조하십시오.

지금까지 가장 섹시한 버전은 형식 문자열이다.

from datetime import datetime

print(f'{datetime.today():%Y-%m-%d}')

datetime 개체의 구성 요소를 직접 사용하여 datetime 개체를 문자열로 변환할 수 있습니다.

from datetime import date  

myDate = date.today()    
#print(myDate) would output 2017-05-23 because that is today
#reassign the myDate variable to myDate = myDate.month 
#then you could print(myDate.month) and you would get 5 as an integer
dateStr = str(myDate.month)+ "/" + str(myDate.day) + "/" + str(myDate.year)    
# myDate.month is equal to 5 as an integer, i use str() to change it to a 
# string I add(+)the "/" so now I have "5/" then myDate.day is 23 as
# an integer i change it to a string with str() and it is added to the "5/"   
# to get "5/23" and then I add another "/" now we have "5/23/" next is the 
# year which is 2017 as an integer, I use the function str() to change it to 
# a string and add it to the rest of the string.  Now we have "5/23/2017" as 
# a string. The final line prints the string.

print(dateStr)  

출력 --> 2017년 5월 23일

날짜/시간을 문자열로 변환할 수 있습니다.

published_at = "{}".format(self.published_at)

" " " , " ,str.join를 사용하여 문자열을 작성할 수 있습니다.

d = datetime.now()
'/'.join(str(x) for x in (d.month, d.day, d.year))
'3/7/2016'

향후 얼마나 멀리 떨어져 있는지에 대한 접근법

  • 언어를 li 타임스탬프에 하는 리스트, 「」를 참조해 주세요.
from datetime import datetime
from dateutil import parser

t1 = parser.parse("Tue May 26 15:14:45 2021")
t2 = parser.parse("Tue May 26 15:9:45 2021")
# 5min
t3 = parser.parse("Tue May 26 11:14:45 2021")
# 4h
t4 = parser.parse("Tue May 26 11:9:45 2021")
# 1day
t6 = parser.parse("Tue May 25 11:14:45 2021")
# 1day4h
t7 = parser.parse("Tue May 25 11:9:45 2021")
# 1day4h5min
t8 = parser.parse("Tue May 19 11:9:45 2021")
# 1w
t9 = parser.parse("Tue Apr 26 11:14:45 2021")
# 1m
t10 = parser.parse("Tue Oct 08 06:00:20 2019") 
# 1y7m, 19m
t11 = parser.parse("Tue Jan 08 00:00:00 2019") 
# 2y4m, 28m


# create: date of object creation
# now: time now
# li: a list of string indicate time (in any language)
# lst: suffix (in any language)
# long: display length
def howLongAgo(create, now, li, lst, long=2):
    dif = create - now
    print(dif.days)
    sec = dif.days * 24 * 60 * 60 + dif.seconds
    minute = sec // 60
    sec %= 60
    hour = minute // 60
    minute %= 60
    day = hour // 24
    hour %= 24
    week = day // 7
    day %= 7
    month = (week * 7) // 30
    week %= 30
    year = month // 12
    month %= 12
    s = []
    for ii, tt in enumerate([sec, minute, hour, day, week, month, year]):
        ss = li[ii]
        if tt != 0:
            if tt == 1:
                s.append(str(tt) + ss)
            else:
                s.append(str(tt) + ss + 's')

    return ' '.join(list(reversed(s))[:long]) + ' ' + lst



t = howLongAgo(t1, t11, [
    'second', 
    'minute',
    'hour', 
    'day',
    'week', 
    'month',
    'year',
], 'ago')
print(t)
# 2years 4months ago
end_date = "2021-04-18 16:00:00"
end_date_string = end_date.strftime("%Y-%m-%d")
print(end_date_string)

언급URL : https://stackoverflow.com/questions/10624937/convert-datetime-object-to-a-string-of-date-only-in-python

반응형