Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

시간 간격 구하기

시간을 계산해야 할 일이 필요했다.

내가 필요했던 부분은 경매사이트에서 DB에 들어있는 마감시각을 가져와서 현재시각과 계산하여 남은 시간을 계산하기 위해서였다.

C#에서 DateTime이 시간이다. 보통 DB에도 "2007-07-23 오전 12:52"같은 형식으로 들어가는데 그럼 이것을 어떻게 계산을 해야하는가? 일단 그냥 빼기를 해서는 계산이 되지를 않았다.

C#에서는 연산자 오버로드를 할 수 있으므로 연산자 오버로드를 해야하는가 하면서 이것저것 뒤지다가 나온 것인 TimeSpan이다. 둘다 System네임스페이스를 사용한다.

TiemSpan은 시간 간격을 나타내는 구조체이다. DateTime을 계산하기 위해서 사용한다.

일단 소스를보자.


DateTime end = DateTime.Parse(EndtimeHF.Value.ToString());
TimeSpan t3 = end.Subtract(DateTime.Now);
TimeSpan t2 = DateTime.Now.Subtract(DateTime.Now);
if (t3.CompareTo(t2) > 0)
{
    DeadlineLB.Text = t3.Days + "일 " + t3.Hours + "시간 " + t3.Minutes + "분 " + t3.Seconds + "초 남았습니다.";   
}
else
{
    DeadlineLB.Text = EndtimeHF.Value.ToString();
}

따로 또 수정하기 귀찮아서 그냥 내가 쓴 소스를 그대로 잘라왔다. ㅋ

여기선 히든필드에서 값을 가져왔지만 스트링이면 DateTime으로 캐스팅하면 되고 DateTime이면 그냥 쓰면 된다.

Substract가 값을 빼는 메서드이다. end에서 현재의 시간을 빼고 이걸 TimeSpan t3에 저장해서 남은 시간을 계산했다.

여기에 시간 간격이 0이하일 경우에는 그냥 종료시간만 표시하기 위해서 TimeSpan t2를 썼다. 이것저것 만져봤지만 TimeSpan의 형식을 정확히 알 수가 없어서 크기를 계산할 수가 없어서 나름대로 꼼수를 부렸다. Substract로 현재에서 현재를 빼서 t2에 저장을 했다. 연산속도를 보았을때 0이 나올 것이고 머 꼭 0이 아니더라도 너무 작은 값이므로 큰 상관이 없다.

비교메서드인 CompareTo를 사용해서 t3와 t2를 사용해서 시간간격이 0보다 큰지 아닌지를 비교했다.

2007/07/23 01:05 2007/07/23 01:05

처음 써본 JSON

몇일전에 제이슨이란 걸 듣게 되었다. 나중에 찾아보니 이름정도는 들어본 것도 같지만 처음 들었을때는 "이건 또 머야?" 하는 생각이 들었다.

XML의 단점을 좀 상쇄할 어쩌구 저쩌구.... 용도가 오나전히 같다고 볼순 없을것 같지만... 듣고 처음 검색한 것은 어김없이 "Jason"이었다.. ㅡ..ㅡ jason이 아니고 JSON일 줄이야.. ㅡ..ㅡ

사용자 삽입 이미지
JSON은 JavaScript Object Notation인데... 데이터를 교환하기 위해서 초경량화한 데이터 형식으로 { 이름:값}의 형식으로 데이트를 다룬다. 약간의 설명은 위키피디아에... 어쨌든 역시 처음 본거를 만져보는건 그냥 죽~ 공부하는 것 보다는 실제 써보는 거다....

지번검색하는 프로그램에서 4시간정도에 걸쳐서 html로 스트링 만들어서 반환하는 걸 json으로 반환해서 받아서 json을 까는 걸 해봤다... 하라는 대로 하는데 왜 이렇게 안되는겨.... 머가 먼지도 잘 모르겠고....

json이 어떤건지도 잘 모른 상황에서 직접 다룰려니 여기저기 사이트 뒤져보고 정확히 어떤 함수인지 어떤 역활을 하는지 모르면서 써보고... 안되니까 왜안되는지 알아보려고 그 함수에 대해서 더 자세히 알아보고... 자세히 알아보니까 또 그럴때 쓰는게 아니고 찾아보니까 또 새로운거 찾아내고..

몇시간 삽질하니까 대충은 감이 온다. 머 감이 온다고 쓸수 있는것도 아니지만.... 아~ 이런게 JSON이구나 하는 정도? 앞으로는 많이 쓴다니까
2007/07/22 01:07 2007/07/22 01:07