c#/Winform

[c#] winform Datetimepicker

byH 2021. 12. 21. 15:56
728x90
반응형

..거의 다 작성했는데.. 뭘 잘못눌렀다..

매우 매우 다시 작성하고 싶지 않지만 . . . . . . 다시 . . 

datatimepicker는 value에 datetime을 준다.

datetime은 하단 링크를 참조하자 

https://hengs.tistory.com/43?category=1063480 

 

[c#] DateTime 현재날짜, 현재시간

현재 날짜와 시간을 다양한 형태로 표현해보자 private void button1_Click(object sender, EventArgs e) { DateTime dt = new DateTime(); //2021년 12월 16일 목요일 string dt1 = DateTime.Now.ToLongDateStri..

hengs.tistory.com

 

1) 아무 설정없이 form에 datetimepicker를 추가했을 때 

오늘 날짜가 "2021년 12월 21일 화요일" 의 형태로 들어간다.

그리고 달력을 눌러 날짜를 변경할 수 있다. 

 

2) 원하는 형태로 넣기

"2021년 12월 21일 화요일" 대신에 "2021-12-21"로 설정해보자

 private void Form3_Load(object sender, EventArgs e)
        {
            string sminday = "2021-12-21";
            DateTime minday = DateTime.Parse(sminday);
            dateTimePicker1.Value = minday;

        }

 

3) 날짜 더하기 (datetime이지만..ㅇㅕ기에 슬쩍..)

datetime에는 AddDays, AddMonths, AddYears 라는 함수가 있다.

2021-12-21일에서 2 days를 더하면 2021-12-23일이다.

2021-12-21일에서 2 month를 빼면 2021-10-21일이다.

2021-12-21일에서 2 year을 더하면 2023-12-21일이다.

다음과 같이 설정할 수 있다는 것을 알아두고 다음 단계로 가자 

 private void Form3_Load(object sender, EventArgs e)
        {
            DateTime dt = DateTime.Now;
            DateTime addday = dt.AddDays(-2);
            addday = dt.AddMonths(-2);
            addday = dt.AddYears(2);
            dateTimePicker1.Value = addday;
        }

4) 매달 1일로 설정하기

2021-12-21일에서 2021-12-01을 구하고 싶을 때 년, 월, + 01로 설정해도 되지만 

연산을 통해 계산해보자

21일은 1일에서 21일이 지난 날이다, 그럼 반대로 21일을 빼주고 1일을 위해 1을 더해주자

  private void Form3_Load(object sender, EventArgs e)
        {
            DateTime firstdt = DateTime.Now;
            int curDay = firstdt.Day;
            if (curDay == 1) firstdt = firstdt.AddDays(0);
            else firstdt = firstdt.AddDays(-curDay + 1);
            dateTimePicker1.Value = firstdt;
        }

 

5) 매달 말일로 설정하기

1월은 31일 2월은 28일 3월은 31일 . . . 등 매달 말일은 특정 숫자로 설정할 수 없다. 

그렇다면 매달 1일을 계산했기 때문에 1일에서 + 1달을 한 후 -1일을 하면 매달 말일일 것이다.

private void Form3_Load(object sender, EventArgs e)
        {
            DateTime firstdt = DateTime.Now;
            int curDay = firstdt.Day;
            if (curDay == 1) firstdt = firstdt.AddDays(0);
            else firstdt = firstdt.AddDays(-curDay + 1);
            dateTimePicker1.Value = firstdt;


            DateTime lastday = firstdt.AddMonths(1).AddDays(-1);
            dateTimePicker2.Value = lastday;
        }

 

6) 값이 바뀌면 label 의 text에 날짜로 바꿔주기

- 이벤트 설정 : datetimepicker 선택 후 속성창에서 번개모양 선택 후 valueChanged 더블클릭 하면 자동으로 생성된다. 

 

- datetimepicker 의 value를 받아 label text로 설정 

 private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            string fromdate = dateTimePicker1.Value.ToShortDateString();
            label1.Text = fromdate;

        }

        private void dateTimePicker2_ValueChanged(object sender, EventArgs e)
        {
            string todate = dateTimePicker2.Value.ToShortDateString();
            label2.Text = todate;
        }

- 프로그램 확인

728x90
반응형