2013-10-06 2 views
0

파이썬 날짜 목록을 가지고 있으며 가장 최근의 가장 오래된 것을 찾기 위해 min과 max를 사용하고 있습니다. (가장 좋은 방법은 무엇입니까?) 또한 포맷해야합니다. 내가 현재 시간을 알아 내고 목록에서 가장 오래된 날짜를 뺄 수있는 무언가에 날짜를 넣어서 "지난 27 분 동안 ..."과 같은 말을 할 수 있습니다. 여기서 일, 시간 또는 분의 경과 일 수를 나타낼 수 있습니다 이후 가장 오래된. 여기 내 목록이 있습니다 (날짜가 분명히 내가 뽑는 것에 따라 변경됨). 그래서 현재 형식을 볼 수 있습니다. 필요한 정보를 얻으려면 어떻게해야합니까?포맷 날짜 및 시간 합계

[u'Sun Oct 06 18:00:55 +0000 2013', u'Sun Oct 06 17:57:41 +0000 2013', u'Sun Oct 06 17:55:44 +0000 2013', u'Sun Oct 06 17:54:10 +0000 2013', u'Sun Oct 06 17:35:58 +0000 2013', u'Sun Oct 06 17:35:58 +0000 2013', u'Sun Oct 06 17:35:25 +0000 2013', u'Sun Oct 06 17:34:39 +0000 2013', u'Sun Oct 06 17:34:39 +0000 2013', u'Sun Oct 06 17:34:39 +0000 2013', u'Sun Oct 06 17:30:35 +0000 2013', u'Sun Oct 06 17:25:28 +0000 2013', u'Sun Oct 06 17:24:04 +0000 2013', u'Sun Oct 06 17:24:04 +0000 2013', u'Sun Oct 06 17:22:08 +0000 2013', u'Sun Oct 06 17:22:08 +0000 2013', u'Sun Oct 06 17:21:00 +0000 2013', u'Sun Oct 06 17:18:49 +0000 2013', u'Sun Oct 06 17:18:49 +0000 2013', u'Sun Oct 06 17:15:29 +0000 2013', u'Sun Oct 06 17:15:29 +0000 2013', u'Sun Oct 06 17:13:35 +0000 2013', u'Sun Oct 06 17:12:18 +0000 2013', u'Sun Oct 06 17:12:00 +0000 2013', u'Sun Oct 06 17:07:34 +0000 2013', u'Sun Oct 06 17:03:59 +0000 2013'] 
+0

질문을 좀 더 명확하게해야합니다. 어떻게 날짜를 가져 오는거야? 그것들을 datetime 객체로 가져 옵니까? 특정 목록에 대한 의도 된 결과는 무엇입니까? – yuvi

답변

0

당신은하지 않습니다 목록에서 가장 오래되고 최신 날짜/시간 항목 minmax을 사용하여 항목과 함께 - "Fri"는 예를 들어 "Mon"앞에옵니다. 따라서 날짜/시간 스탬프를 적절히 표현하는 데이터 구조에 상황을 넣기를 원할 것입니다.

다행히도 Python의 datetime 모듈에는 많은 날짜/시간 스탬프 문자열을 적절한 표현 (datetime.datetime.strptime)으로 변환하는 방법이 있습니다. 사용 방법은 the guide을 참조하십시오.

일단 완료되면 minmax 다음에 timedelta을 사용하여 차이를 계산할 수 있습니다.

from datetime import datetime 

# Start with the initial list 
A = [u'Sun Oct 06 18:00:55 +0000 2013', u'Sun Oct 06 17:57:41 +0000 2013', u'Sun Oct 06 17:55:44 +0000 2013', u'Sun Oct 06 17:54:10 +0000 2013', u'Sun Oct 06 17:35:58 +0000 2013', u'Sun Oct 06 17:35:58 +0000 2013', u'Sun Oct 06 17:35:25 +0000 2013', u'Sun Oct 06 17:34:39 +0000 2013', u'Sun Oct 06 17:34:39 +0000 2013', u'Sun Oct 06 17:34:39 +0000 2013', u'Sun Oct 06 17:30:35 +0000 2013', u'Sun Oct 06 17:25:28 +0000 2013', u'Sun Oct 06 17:24:04 +0000 2013', u'Sun Oct 06 17:24:04 +0000 2013', u'Sun Oct 06 17:22:08 +0000 2013', u'Sun Oct 06 17:22:08 +0000 2013', u'Sun Oct 06 17:21:00 +0000 2013', u'Sun Oct 06 17:18:49 +0000 2013', u'Sun Oct 06 17:18:49 +0000 2013', u'Sun Oct 06 17:15:29 +0000 2013', u'Sun Oct 06 17:15:29 +0000 2013', u'Sun Oct 06 17:13:35 +0000 2013', u'Sun Oct 06 17:12:18 +0000 2013', u'Sun Oct 06 17:12:00 +0000 2013', u'Sun Oct 06 17:07:34 +0000 2013', u'Sun Oct 06 17:03:59 +0000 2013'] 

# This is the format string the date/time stamps are using 
# On Python 3.3 on Windows you can use this format 
# s_format = "%a %b %d %H:%M:%S %z %Y" 
# However, Python 2.7 on Windows doesn't work with that. If all of your date/time stamps use the same timezone you can do: 
s_format = "%a %b %d %H:%M:%S +0000 %Y" 

# Convert the text list into datetime objects 
A = [datetime.strptime(d, s_format) for d in A] 

# Get the extremes 
oldest = min(A) 
newest = max(A) 

# If you substract oldest from newest you get a timedelta object, which can give you the total number of seconds between them. You can use this to calculate days, hours, and minutes. 
delta = int((newest - oldest).total_seconds()) 
delta_days, rem = divmod(delta, 86400) 
delta_hours, rem = divmod(rem, 3600) 
delta_minutes, delta_seconds = divmod(rem, 60) 
+0

이 모든 것을 작성해 주셔서 감사합니다. "파일"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_strptime.py "_strptime (bad_directive, 형식)의 317 줄에이 오류가 나타납니다. ValueError : 'z'는 형식이 잘못된 지시어입니다. '% a % b % d % H : % M : % S % z % Y "" – user2270029

+0

아,이 코드는 Python 3.3에서 작성했습니다. 당신은 2.7을 사용하고 있습니다. 몇 가지 차이점이 있습니다. 매달려있는 것을 알아낼 수 있는지 알아 보겠습니다./ – bbayles

+0

Windows에서 Python 2.7에 대한 대안을 추가했습니다. 모든 시간대가 같다고 가정합니다. – bbayles