2012-03-22 6 views
2

타임 스탬프의 ArrayList가 있습니다. 이 ArrayList를 여러 ArrayLists 광고로 나눠서 광고를 HashMap에 넣으려고합니다. 나는 다음과 같은 알고리즘이 작동합니다 알고타임 스탬프를 별도의 날짜로 분할해야합니다.

myTimestampMap['21-03-2012'] = ArrayList { myTimestamp[0], myTimestamp[1], myTimestamp[2] }; 
myTimestampMap['22-03-2012'] = ArrayList { timeStmyTimestamp[3], myTimestamp[4]}; 

- 그래서 14-01-2011에 대한 모든 타임 스탬프는

의사 코드 ... 등 모든 타임 스탬프 함께 갈 29-01-2012 위해 함께 이동 -

  • 는 타임 스탬프의 ArrayList의 첫 번째 값을 가져가 '하루'의 찾아 currentDay (라는 변수에 그를 할당 그래서 첫 번째 타임 스탬프 2012년 3월 12일에게 14시 26분 PM 인 경우 3 월 12 일 2012 년을 오전 12시을 할당 to currentDay).

  • 이제 Timestamp를 반복하고 getDay()가 currentDay + 24 시간 내에 있지 않으면 currentDay = getDay() (00:00 AM)를 할당하고 HashMap에 새 키를 만들고 다음 Timestamp를 모두 다시 getDay()가 currentDay + 24 시간 내에 있지 않은 Timestamp에 도달 할 때까지 기다렸다가 다시 반복합니다.

    1. 내가 확신하고있는 것은 내가 말, 의미 타임 스탬프 3 월 12 일이있는 경우입니다 2012 16시 57분 오후, 나는 12 년 3 월 2012 오전 12시을 의미하는 것과는 타임 스탬프 (currentDay)를 도출해야합니다. 내가 어떻게 그럴 수 있니?
    2. 또한 주어진 Timestamp가 currentDay Timestamp의 24 시간 이내에 있는지 확인해야합니다. 내가 어떻게 그럴 수 있니?
+1

관심있는 표준 시간대는 무엇입니까? –

+0

GMT. 나는 다른 시간대에 대해 걱정할 필요가 없다. – csss

답변

1

당신이 시간대 문제를 무시할 수 있다고 가정하면 (당신이 UTC에있는 예를 들어, 모든 시간을 당신이 윤초 상관 없어!) ...

당신이 날짜를 변환하는 경우와 어떤 참조 날짜 (epoch time 형식은 1/1/1970 00:00:00을 사용합니다.) 이후로 몇 초 동안 시간을 ​​초 단위로 입력하면 초를 정수로 나눈 값을 일 수를 나타내는 정수로 변환 할 수 있습니다.

주어진 시간 스탬프가 같은 날인지 확인하려면 / 86400 값을 비교하면됩니다.

+1

모듈로 나누지 않음. 그냥 * 단위/일로 * 나누십시오. –

+0

좋아, 응원단에게 기회를 줄거야 – csss

+0

@JonSkeet 좋은 지적, 게시물을 업데이트했습니다. –

관련 문제