내가 준 날짜 문자열 :파이썬 사람이 읽을 수있는 날짜 차이
Mon Jun 28 10:51:07 2010
Fri Jun 18 10:18:43 2010
Wed Dec 15 09:18:43 2010
일의 차이를 계산하기 편리한 파이썬 방법은 무엇입니까? 시간대가 같다고 가정합니다.
문자열이 linux 명령에 의해 반환되었습니다.
편집
:, 감사합니다 너무 많은 좋은 답변내가 준 날짜 문자열 :파이썬 사람이 읽을 수있는 날짜 차이
Mon Jun 28 10:51:07 2010
Fri Jun 18 10:18:43 2010
Wed Dec 15 09:18:43 2010
일의 차이를 계산하기 편리한 파이썬 방법은 무엇입니까? 시간대가 같다고 가정합니다.
문자열이 linux 명령에 의해 반환되었습니다.
편집
:, 감사합니다 너무 많은 좋은 답변#!/usr/bin/env python
import datetime
def hrdd(d1, d2):
"""
Human-readable date difference.
"""
_d1 = datetime.datetime.strptime(d1, "%a %b %d %H:%M:%S %Y")
_d2 = datetime.datetime.strptime(d2, "%a %b %d %H:%M:%S %Y")
diff = _d2 - _d1
return diff.days # <-- alternatively: diff.seconds
if __name__ == '__main__':
d1 = "Mon Jun 28 10:51:07 2010"
d2 = "Fri Jun 18 10:18:43 2010"
d3 = "Wed Dec 15 09:18:43 2010"
print hrdd(d1, d2)
# ==> -11
print hrdd(d2, d1)
# ==> 10
print hrdd(d1, d3)
# ==> 169
# ...
사용 strptime.
샘플 사용 :
이from datetime import datetime
my_date = datetime.strptime('Mon Jun 28 10:51:07 2010', '%a %b %d %H:%M:%S %Y')
print my_date
편집 :
또한과 같이, 사람이 읽을 수있는 형태로 시간 차이를 인쇄 할 수 있습니다 :
from time import strptime
from datetime import datetime
def date_diff(older, newer):
"""
Returns a humanized string representing time difference
The output rounds up to days, hours, minutes, or seconds.
4 days 5 hours returns '4 days'
0 days 4 hours 3 minutes returns '4 hours', etc...
"""
timeDiff = newer - older
days = timeDiff.days
hours = timeDiff.seconds/3600
minutes = timeDiff.seconds%3600/60
seconds = timeDiff.seconds%3600%60
str = ""
tStr = ""
if days > 0:
if days == 1: tStr = "day"
else: tStr = "days"
str = str + "%s %s" %(days, tStr)
return str
elif hours > 0:
if hours == 1: tStr = "hour"
else: tStr = "hours"
str = str + "%s %s" %(hours, tStr)
return str
elif minutes > 0:
if minutes == 1:tStr = "min"
else: tStr = "mins"
str = str + "%s %s" %(minutes, tStr)
return str
elif seconds > 0:
if seconds == 1:tStr = "sec"
else: tStr = "secs"
str = str + "%s %s" %(seconds, tStr)
return str
else:
return None
older = datetime.strptime('Mon Jun 28 10:51:07 2010', '%a %b %d %H:%M:%S %Y')
newer = datetime.strptime('Tue Jun 28 10:52:07 2010', '%a %b %d %H:%M:%S %Y')
print date_diff(older, newer)
Original source 시간 조각에 대한 .
>>> import datetime
>>> a = datetime.datetime.strptime("Mon Jun 28 10:51:07 2010", "%a %b %d %H:%M:%S %Y")
>>> b = datetime.datetime.strptime("Fri Jun 18 10:18:43 2010", "%a %b %d %H:%M:%S %Y")
>>> c = a-b
>>> c.days
10
이 시도하십시오 timedelta 개체 더 나은 인쇄하는 방법에 대한 자세한 내용은
>>> (datetime.datetime.strptime("Mon Jun 28 10:51:07 2010", "%a %b %d %H:%M:%S %Y") - datetime.datetime.strptime("Fri Jun 18 10:18:43 2010", "%a %b %d %H:%M:%S %Y")).days
10
from datetime import datetime
resp = raw_input("What is the first date ?")
date1 = datetime.strptime(resp,"%a %b %d %H:%M:%S %Y")
resp2 = raw_input("What is the second date ?")
date2 = datetime.strptime(resp2,"%a %b %d %H:%M:%S %Y")
res = date2-date1
print str(res)
, 당신은 this previous post을 볼 수 있습니다.
다른 답변과 같은 줄에는 없지만 사람이 읽을 수있는 (더 정확하지 않은) 것을 표시하려는 사용자에게 도움이 될 수 있습니다. 나는 이것을 빨리했고, 그래서 제안은 환영한다.
(이 until_seconds
는 나중에 시간 소인입니다 가정합니다.)
def readable_delta(from_seconds, until_seconds=None):
'''Returns a nice readable delta.
readable_delta(1, 2) # 1 second ago
readable_delta(1000, 2000) # 16 minutes ago
readable_delta(1000, 9000) # 2 hours, 133 minutes ago
readable_delta(1000, 987650) # 11 days ago
readable_delta(1000) # 15049 days ago (relative to now)
'''
if not until_seconds:
until_seconds = time.time()
seconds = until_seconds - from_seconds
delta = datetime.timedelta(seconds=seconds)
# deltas store time as seconds and days, we have to get hours and minutes ourselves
delta_minutes = delta.seconds // 60
delta_hours = delta_minutes // 60
## show a fuzzy but useful approximation of the time delta
if delta.days:
return '%d day%s ago' % (delta.days, plur(delta.days))
elif delta_hours:
return '%d hour%s, %d minute%s ago' % (delta_hours, plur(delta_hours), delta_minutes, plur(delta_minutes))
elif delta_minutes:
return '%d minute%s ago' % (delta_minutes, plur(delta_minutes))
else:
return '%d second%s ago' % (delta.seconds, plur(delta.seconds))
def plur(it):
'''Quick way to know when you should pluralize something.'''
try:
size = len(it)
except TypeError:
size = int(it)
return '' if size==1 else 's'