2011-01-27 2 views
0
I는 예를 들어 23

계산 시간차

, 21:00 0 개의 24 시간 값을 감산 할 필요

- (!) 23시간 아니라 반환해야 22시 -1 시간.

몇 분은 상관 없습니다.

검색을 시도했지만 얻을 수 없습니다. 그러나 나는 이미 그것을위한 기능이 있다는 것을 느낀다. 그래서 그것을 쓰는 것을 괴롭히지 않았다.

감사합니다.

+1

어? 21 : 00-22 : 00 = 11 시간은 어떻게됩니까? –

+0

21과 22는 어떻게 11일까요? 내 말은, 나는 23을 이해 하겠지만, 11은 이해하겠습니까? – Nanne

답변

1

는 두 번을 뺀 결과가 음수 인 경우 추가 24

+0

하지만 그럴 경우 11이 아니라 23이 될 것입니다. ( – Nanne

+0

23 정답이 아니십니까? – ChrisW

+0

혼란스러워서 죄송합니다. 답변은 23 .. 11이 아닙니다. – kapeels

0

사용 모듈 : (24+a-b)%24

(I 11 오타가 여기에 있다고 가정하고, 정답은 23)

0

그냥 정수로 처리하고 0-23으로 정규화하십시오. 당신이 정말로 생각한다면

var c = (a%24 - b%24); 
return c < 0 ? c+24; 

것은 21시에서 22시까지 == 11, 당신은 그래서 당신이 24 시간으로 표현 된 두 번 사이의 12 시간 시간 값의 차이를 원하는 뜻한다 당신은 정말 계수 12 원하는 :

var c = (a%12 - b%12); 
return c < 0 ? c+12; 

반환 (9-10) + 12 = 11

1

내가 당신이 원하는 것은 21시 생각 - 22시 23 시간 제공합니다. 다시 말해, 오늘 밤 10 시가되면 내일 9 시가 23 시간 남았습니다. 쉽습니다.

  • 시간 1과 TIME2는
  • 퍼센트 시간에 제공해야합니다

    hours = (time1 - time2 + 24) % 24; 
    

    는 나머지 연산자

왜 (24)를 추가에게 무엇입니까? 괄호 안에 24를 추가하면 음수의 모듈로를 취할 때 정의되지 않은 동작 문제가 해결됩니다. 이것은 파이프 라인을 정지시키지 않기 때문에 if 문보다 낫습니다.