2020. 7. 7. 04:03ㆍ시도
TimeSpan을 사용하여 두 날짜를 비교할 수 있다. (timeDif.Days = 일수 차이 반환 / timeDif.Hours = 시간 차이 반환)
여기서 주의할 점이 있다. Hours는 두 날짜의 일수가 얼마나 차이가 나든지 '시간'만 반환한다. 예를 들어 스타트 날짜가 7월 7일 오후 7시이고 현재 날짜가 7월 10일 오후 7시라고 했을 때, 두 날짜 사이에 timeDif.Hours를 찍어보면 0으로 찍힌다.
그렇다면 Days는 얼핏 봐서는 '일'의 차이만 찍어낼 것처럼 생겼다. 위의 사진처럼 7월 6일과 7월 7일의 날짜를 비교하면 결과가 어떻게 나올까? 일수의 차이가 1일이니 timeDif.Days가 1이라고 나올까? if문을 사용해서 걸러보면 결과는 다음과 같다.
정답은 No다. 단순히 날짜만 봐서는 다른 날이지만 Days는 24시간이 지나야 하루가 갔다고 인식한다. 내가 이 부분을 헷갈려서 코드를 잘못 짰다.
이렇게 24시간이 지나야지 else if로 들어온다. (아래 사진)
위의 코드들을 게임 내에서 시간 경과에 따른 보상을 줄 때 사용했었다. 예를 들어 24시간이 지나면 2배를 받을 수 있는 식으로 말이다. 그런데 위에 썼다시피 저 부분을 헷갈려서, 시간이 다 지났음에도 보상을 못 받는 상황이 발생했다. 다음부터는 헷갈리지 말아야지 하는 마음으로 정리를 해보았다.
끝으로 아래는 게임 내에서 썼던 코드 중 일부분이다. 게임 내에서는 현재 접속 시간을 저장하여 비교하는 식으로 사용했다. DateTime.Now는 현재의 날짜와 시간을 반환한다. 이것을 저장하여 두 접속 시간의 차이를 계산했다.
시간에 따른 보상을 주고 싶으면 timeDif.Hours로 시간을 계산한 후, (보상 * 시간) 이런 식으로 사용하고 있다. 24시간이 넘어가면 timeDif.Days로 차이를 계산한 후, 1일을 24시간으로 계산하면 될 것 같다.
*개인 공부용으로 작성된 글입니다.*
'시도' 카테고리의 다른 글
12번째 어플 출시 - 동물 퍼즐 맞추기 (0) | 2020.07.21 |
---|---|
11번째 어플 출시 - 동물 블록 쌓기 (0) | 2020.07.08 |
유니티 이미지 뒤집기 (Sprite Flip) / 이미지 반전 (0) | 2020.06.24 |
10번째 어플 출시 (0) | 2020.06.22 |
깃허브(GitHub) 가입 + 웹호스팅 하기 + 제이쿼리(jQuery) (0) | 2020.06.11 |