시스템을 구현할때 프로그램에 현재시간을 표기해야 하는 경우가 발생하는데
이를 로컬PC시간이 아닌 서버시간을 표현할라치면 매법 타이머 돌때마다 서버시간 쿼리를 불러 처리하려다보면
당근 부하가 차리라는 생각이 든다.
이전 프로젝트 할때 사용했던 방법으로 최초 DB시간을 불러와 현재의 로컬PC시간과의 차이를 구해 처리하는 방법으로 나타냈다.
중간 중간 시간이 맞는지 1시간 마다 또는 필요할 때 마다 동기화 처리를 다시해서 표현하는 방법을 쓰면 유용하리라 본다.
/////////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace _CS__DB시간매칭
{
public partial class Form1 : Form
{
private TimeSpan span;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// DB의 현재시간을 구해오는 쿼리
DataTable dt = ServiceAgent.Request("SYS", "DF_CERTUSER", "1", "2", "3").Tables[0]; // 이건 각자 해보시길...^^
if (dt.Rows.Count > 0)
{
DateTime sysDate = Convert.ToDateTime(dt.Rows[0][0].ToString());
DateTime now = DateTime.Now;
this.span = sysDate.Subtract(now);
}
}
public DateTime GetSysDateTime
{
get
{
return DateTime.Now.Add(this.span);
}
}
//서버일자와 현재일자에서 오차를 더하면 결국 서버일자이므로 서버일자 반환
public string GetSysDate
{
get
{
return DateTime.Now.Add(this.span).ToString("yyyy-MM-dd");
}
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = GetSysDateTime.ToString();
}
}
}
'020. Prigraming > 01. C#' 카테고리의 다른 글
[C#] List 제네릭 클래스 (0) | 2010.09.08 |
---|---|
[C#] 나에겐 여전히 부담되는... [Thread] (0) | 2010.09.08 |
[C#] 웹상의 파일 다운로드 하기 (0) | 2010.07.23 |
[C#] 사용자 IP 구하기 (0) | 2010.06.04 |
[C#] get과 set에 대하여 알아보자 (0) | 2010.06.03 |
WRITTEN BY
- 테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게