반올림 한 시간 프레임의 시간 스탬프를 확인하는 좋은 방법은 무엇입니까? 예를 들어, "2014-01-04 19:11:35"로 변환되는 1388898695의 데이터베이스에서 타임 스탬프를 가져옵니다.시간 간격을 계산하여 시간 간격을 균등하게 계산하는 Python 메서드
이제 과거의 몇 분이 지난 이전 레코드를 찾고 싶습니다. 2014-01-04 19:10:00부터 시작하십시오. 타임 스탬프 (이 경우 95)에서 초를 알아 내고 13388898695에서 빼서 19:10:00 타임 스탬프로 데이터베이스를 검색 할 수 있습니까?
저는 5 분 또는 15 분 단위와 같은 다른 시간 프레임을 계산하기를 원하기 때문에 일반적인 방법을 찾고 있습니다.
는 확인이 아주 예쁜 아니지만,의는 년/월/일 롤 오버를 무시하고 단지 과거 이분의도 간격을 찾으려고 수 있습니다. 그래서 19:53:12는 19:52:00 (19:50:00까지) 검색을 트리거합니다.
#(2014-01-04 19:53:12)
time1=1388901192
year=int(datetime.datetime.fromtimestamp(time1).strftime('%Y'))
month=int(datetime.datetime.fromtimestamp(time1).strftime('%m'))
day=int(datetime.datetime.fromtimestamp(time1).strftime('%d'))
hours=int(datetime.datetime.fromtimestamp(time1).strftime('%H'))
minutes=int(datetime.datetime.fromtimestamp(time1).strftime('%M'))
seconds=0
if minutes%2 == 0:
minutes-=2
else:
minutes-=1
timeString="%s-%s-%s %s:%s:00" % (year,month,day,hours,minutes)
newTime=time.mktime(time.strptime(timeString, '%Y-%m-%d %H:%M:%S'))
print newTime, time1
print datetime.datetime.fromtimestamp(newTime).strftime('%Y-%m-%d %H:%M:%S')
이 작업을 수행하려면 매우 깨끗한 방법이 아니다 그것은이처럼 보인다 1388901120.0 또는 2014년 1월 4일 19시 52분 0초
의 검색 시간을 생성합니다.
여기 Burhan입니다 칼리드의 방법을 사용하여 내 일반적인 해결책 :
이# take timestamp, rewind to timeframe that provides the newest end point where a full interval
# 10:42:34 -> 10:42:00 for interval=2 to fetch records 10:42:00 to 10:40:00
# 10:49:34 -> 10:40:00 for interval=10 to fetch records 10:40:00 to 10:30:00
dt = datetime.datetime.fromtimestamp(ts)
if (dt.minute % interval) == 0:
prev_ts = dt-datetime.timedelta(minutes=0,seconds=dt.second)
else:
temp=round(dt.minute/interval)
temp*=interval
temp=dt.minute-temp
prev_ts = dt-datetime.timedelta(minutes=temp,seconds=dt.second)
print "%s: %s -> %s" % (interval, dt, prev_ts)
print time.mktime(prev_ts.timetuple())
http://docs.python.org/2/library/datetime.html – SethMMorton
@SethMMorton 필자는 이러한 함수를 사용하고 있음을 분명히 알기를 희망하지만 원하는 시간을 계산하는 방법을 파악하는 데 문제가 있습니다. 인터벌은 검색된 타임 스탬프에 기초한다. – user6972
죄송합니다. 분명하지 않았습니다. 당신은 어떤 코드도 보여주지 않았으므로, 당신이 이미하고있는 일을 전혀 알지 못했습니다. 관련 스 니펫을 표시 할 수 있습니까? – SethMMorton