Closed junhyungmoon closed 3 years ago
모아정원에선 시간을 저장하는 자료형으로
string
과 TimeHandler
의 내부 클래스 DateTimeStamp
를 사용합니다.
두 시간을 비교 할 때, string
과 string
, 또는 DateTimeStamp
와 DateTimStamp
는
서로 비교하는 연산자가 있어 쉽게 비교가 가능하지만,
string
과 DateTimeStamp
를 비교할 땐 한 쪽을 다른 한쪽으로 바꿔줘야 합니다.
DateTimeStamp
는 ToString()
또는 ToDateString()
함수로 string
으로 바꿀 수 있고,
string
은 new DateTimeStamp(string str)
과 같은 생성자로 DateTimeStamp
로 바꿀 수 있습니다.
여기서 문제가 되는 부분은, 모아 정원내에서 string
과 DateTimeStamp
를 비교하기 위해
DateTimeStamp
를 string
으로 바꾸는 과정입니다.
기존의 ToString()
, ToDateString()
함수는 아래와 같습니다.
override public string ToString() {
return Years + "-" + Months + "-" + Days + " " +
Hours + ":" + Minutes + ":" + Seconds;
}
public string ToDateString() {
return Years + "-" + Months + "-" + Days;
}
보면 단순히 int
형 변수들을 string
으로 묶고 있기 때문에,
2021년 8월 25일의 ToDateString()
결과는 2021-8-25
입니다.
하지만 DB에서 전달되는 string
은 #85 [Question] 데이터 timestamp sorting 이슈 에서 변경되어
2021-08-25
으로 읽히기 때문에,
두 string
이 다르다고 판단, 결과값이 하나도 없다고 판단하는 현상입니다.
해결하기 위해 ToString()
과 ToDateString()
을 #85 와 같이 고쳐두었습니다.
override public string ToString() {
return Years + "-" + (Months/10) + (Months%10) + "-" + (Days/10) + (Days%10) + " " +
(Hours/10) + (Hours%10) + ":" + (Minutes/10) + (Minutes%10) + ":" + (Seconds/10) + ( Seconds % 10 );
}
public string ToDateString() {
return Years + "-" + ( Months / 10 ) + ( Months % 10 ) + "-" + ( Days / 10 ) + ( Days % 10 );
}
![Uploading image.png…]()
오늘 물을 10잔 이상 마셨는데 목표 달성이라고 안뜨네요ㅠ 그리고 이 페이지도 모아보기와 마찬가지로 이전 버전의 앱에서 기록해두었던 데이터가 안나옵니다~ 이게 실제로는 일어나지 않을 일이라 넘어가자고 할까 생각했는데, 생각해보니 deployment 후에 피치 못한 상황 때문에 사용자들에게 앱 버전 업데이트를 할 일이 생기면 그 때는 문제가 될 수 있을 것 같습니다.