문자열을 DateTime으로 변환합니다
질문
다음 문자열을 DateTime 객체로 변환하려면 어떻게합니까?
"Jun 1 2005 1:33PM"
답변
DateTime.Strptime은 문자열을 DateTimes로 파싱하기위한 메인 루틴입니다.그것은 모든 종류의 형식을 처리 할 수 있으며, 형식은 포맷 된 형식 문자열에 의해 결정됩니다.
from datetime import datetime
datetime_object = datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
결과 DateTime 객체는 TimeZone-Naive입니다.
연결:
Strptime에 대한 파이썬 문서 : Python 2, Python 3 strptime / strftime 형식 문자열을위한 파이썬 문서 : Python 2, Python 3 strftime.org는 또한 strftime에 대한 정말 좋은 참조입니다
노트:
strptime = "String Parse Time" strftime = "문자열 형식 시간" 오늘을 크게 소리를 냈습니다. 6 개월 만에 다시 검색 할 필요가 없습니다.
또한 @IzKata가 만든 의견에서 볼 수 있듯이 DateTime 대신 날짜를 원한다면 DateTime을 멋지게 처리합니다. datetime.strptime ( 'Jun 1 2005', '% b % d % Y'). 날짜() == 날짜 (2005, 6, 1)
답변
타사 DateUtil 라이브러리를 사용하십시오.
from dateutil import parser
parser.parse("Aug 28 1999 12:00AM") # datetime.datetime(1999, 8, 28, 0, 0)
그것은 구문 분석에 필요한 것을 포함하여 대부분의 날짜 형식을 처리 할 수 있습니다.대부분의 시간의 올바른 형식을 추측 할 수있는 것처럼 능력보다 편리합니다.
가독성이 성능보다 중요한 글쓰기 테스트에 매우 유용합니다.
다음과 같이 설치할 수 있습니다.
pip install python-dateutil
답변
시간 모듈에서의 능력을 확인하십시오.그것은 strftime의 역입니다.
$ python
>>> import time
>>> my_time = time.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
time.struct_time(tm_year=2005, tm_mon=6, tm_mday=1,
tm_hour=13, tm_min=33, tm_sec=0,
tm_wday=2, tm_yday=152, tm_isdst=-1)
timestamp = time.mktime(my_time)
# convert time object to datetime
from datetime import datetime
my_datetime = datetime.fromtimestamp(timestamp)
# convert time object to date
from datetime import date
my_date = date.fromtimestamp(timestamp)
답변
파이썬> = 3.7.
YYYY-MM-DD 문자열을 Datetime Object로 변환하려면 DateTime.FromIsOform을 사용할 수 있습니다.
from datetime import datetime
date_string = "2012-12-12 10:10:10"
print (datetime.fromisoformat(date_string))
2012-12-12 10:10:10
답변
나는 정말로 깔끔한 표현식을 변환 할 수있는 프로젝트를 함께 넣었습니다.TimeString을 확인하십시오.
다음은 다음과 같습니다.
pip install timestring
>>> import timestring
>>> timestring.Date('monday, aug 15th 2015 at 8:40 pm')
<timestring.Date 2015-08-15 20:40:00 4491909392>
>>> timestring.Date('monday, aug 15th 2015 at 8:40 pm').date
datetime.datetime(2015, 8, 15, 20, 40)
>>> timestring.Range('next week')
<timestring.Range From 03/10/14 00:00:00 to 03/03/14 00:00:00 4496004880>
>>> (timestring.Range('next week').start.date, timestring.Range('next week').end.date)
(datetime.datetime(2014, 3, 10, 0, 0), datetime.datetime(2014, 3, 14, 0, 0))
답변
이것을 기억하고 DateTime 변환에서 다시 혼란 스러울 필요가 없었습니다.
DateTime Object = STRPTIME의 문자열
DateTime 객체 다른 형식 = strftime.
Jun 1 2005 1:33 PM.
과 같습니다
% b % d % Y % I : % m % p
% b 월 로켈의 축약 된 이름 (Jun) % D의 데이치가 0으로 채워진 10 진수 (1) 100 진수로 세기와 일년 % (2015) % i 시간 (12 시간 시계)으로 Zero-Padded Decimal 번호 (01) % m 분 0 패딩 소수 숫자 (33) % P 로켈의 AM 또는 PM (PM)
그렇다면 스트립 I-E 변환 문자열이 필요합니다.
>>> dates = []
>>> dates.append('Jun 1 2005 1:33PM')
>>> dates.append('Aug 28 1999 12:00AM')
>>> from datetime import datetime
>>> for d in dates:
... date = datetime.strptime(d, '%b %d %Y %I:%M%p')
... print type(date)
... print date
...
산출
<type 'datetime.datetime'>
2005-06-01 13:33:00
<type 'datetime.datetime'>
1999-08-28 00:00:00
팬더 또는 DateUtil.parse를 사용할 수있는 날짜의 다른 형식이 다른 경우에는 어떨까요?
>>> import dateutil
>>> dates = []
>>> dates.append('12 1 2017')
>>> dates.append('1 1 2017')
>>> dates.append('1 12 2017')
>>> dates.append('June 1 2017 1:30:00AM')
>>> [parser.parse(x) for x in dates]
산출
[datetime.datetime(2017, 12, 1, 0, 0), datetime.datetime(2017, 1, 1, 0, 0), datetime.datetime(2017, 1, 12, 0, 0), datetime.datetime(2017, 6, 1, 1, 30)]
출처:https://stackoverflow.com/questions/466345/converting-string-into-datetime
최근댓글