시간 간격 구하기

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

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

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

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

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

일단 소스를 보자.

(Language : cpp)
  1. DateTime end = DateTime.Parse(EndtimeHF.Value.ToString());
  2. TimeSpan t3 = end.Subtract(DateTime.Now);
  3. TimeSpan t2 = DateTime.Now.Subtract(DateTime.Now);
  4. if (t3.CompareTo(t2) > 0)
  5. {
  6.     DeadlineLB.Text = t3.Days + “일 “ + t3.Hours + “시간 “ + t3.Minutes + “분 “ + t3.Seconds + “초 남았습니다.”;
  7. }
  8. else
  9. {
  10.     DeadlineLB.Text = EndtimeHF.Value.ToString();
  11. }

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

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

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

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

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

Advertisements
Categories: C#

시간 간격 구하기”의 1개의 생각

  1. 질문좀 드리겠습니다
    post 로 값을 던졌습니다…..그리고…

    HttpWebRequest를 이용하여 얻어진 쿠키값을 이용하여 WebBrowser를 사용하고 싶습니다.

    HttpWebRequest HTTP = (HttpWebRequest)WebRequest.Create(“a-login URL”);
    HTTP.CookieContainer = new CookieContainer();
    HTTP.Method = “POST”;
    HTTP.ContentType = “application/x-www-form-urlencoded”;
    MemoryStream bufferStream = new MemoryStream();
    byte[] LoginParamattaBytes = System.Text.Encoding.GetEncoding(“EUC-KR”).GetBytes(“ID=aa&PW=bb”);

    bufferStream.Write(LoginParamattaBytes, 0, LoginParamattaBytes.Length);
    HTTP.ContentLength = bufferStream.Length;
    bufferStream.WriteTo(HTTP.GetRequestStream());
    bufferStream.Close();

    LoginCookie = HTTP.CookieContainer; <== 로그인후 쿠키값 LoginCookie

    위 HttpWebRequest를 이용하여 얻어진 쿠키값을 이용하여 webBrowser1에 접속하고싶습니다.
    webBrowser1.Navigate(“로그인 쿠키값이 필요한 URL”);<-이렇게 제응용플에서 저쿠키를
    가져와 로그인유지하며 다른페이지로 가려고 합니다….
    방법좀 알려주시면 대단히 감사하겠습니다

    webBrowser1.Navigate(a-다른페이지, null, null, webBrowser1.Document.Cookie);
    이런식으로는 적용이 안되더라고요;;;;

    제이메일주소는 automute@live.co.kr입니다 곽창수입니다

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중