C# 달력관련 클래스
using System;
using System.Collections.Generic;
namespace Calrendar.Utils
{
public class CalendarInfo
{
public int Month { get; set; }
/// <summary>
/// 달력 1일 이전의 빈 공간 데이터까지 가지고 있음
/// </summary>
public List<CalendarDayInfo> DayListUI = new List<CalendarDayInfo>();
/// <summary>
/// 기본 숫자(일)만 표현
/// </summary>
public List<CalendarDayInfo> DayList = new List<CalendarDayInfo>();
}
public class CalendarDayInfo
{
/// <summary>
/// 1일 이전의 빈 공간은 NULL
/// </summary>
public int? Day { get; set; }
public DayOfWeek DayOfWeek { get; set; }
}
public class CalendarHelper
{
/// <summary>
/// 오늘 날짜 가져오기
/// </summary>
/// <returns></returns>
public static DateTime GetTodayDate()
{
return DateTime.Today;
}
/// <summary>
/// 해당 월의 첫날 가져오기
/// </summary>
/// <param name="addMonth"></param>
/// <returns></returns>
public static DateTime GetFirstDay(int addMonth)
{
DateTime date = DateTime.Today.AddMonths(addMonth);
return date.AddDays(1 - date.Day);
}
/// <summary>
/// 해당 월의 마지막날 가져오기
/// </summary>
/// <param name="addMonth"></param>
/// <returns></returns>
public static DateTime GetLastDay(int addMonth)
{
DateTime date = DateTime.Today.AddMonths(addMonth);
return date.AddMonths(1).AddDays(0 - date.Day);
}
/// <summary>
/// 해당 월의 날짜 정보 가져오기
/// </summary>
/// <param name="addMonth"></param>
/// <returns></returns>
public static CalendarInfo GetDaysOfMonth(int addMonth)
{
DateTime first = GetFirstDay(addMonth);
var firstDayInfo = new CalendarDayInfo() { Day = first.Day, DayOfWeek = first.DayOfWeek };
DateTime last = GetLastDay(addMonth);
var lastDayInfo = new CalendarDayInfo() { Day = last.Day, DayOfWeek = last.DayOfWeek };
var intDayOfWeek = (int)firstDayInfo.DayOfWeek;
List<CalendarDayInfo> dayListUI = new List<CalendarDayInfo>();
// 달력 1일 이전 공백
for (int i = 0; i < intDayOfWeek; i++)
{
dayListUI.Add(new CalendarDayInfo() { DayOfWeek = (DayOfWeek)i });
}
// first day ~ last day
for (int i = 0; i < last.Day; i++)
{
var date = first.AddDays(i);
dayListUI.Add(new CalendarDayInfo() { Day = date.Day, DayOfWeek = date.DayOfWeek});
}
List<CalendarDayInfo> dayList = new List<CalendarDayInfo>();
// first day ~ last day
for (int i = 0; i < last.Day; i++)
{
var date = first.AddDays(i);
dayList.Add(new CalendarDayInfo() { Day = date.Day, DayOfWeek = date.DayOfWeek });
}
CalendarInfo calendarInfo = new CalendarInfo();
calendarInfo.Month = first.Month;
calendarInfo.DayListUI = dayListUI;
calendarInfo.DayList = dayList;
return calendarInfo;
}
}
}
'C# > Calendar' 카테고리의 다른 글
C# 날짜관련 / 달력관련 (0) | 2020.08.20 |
---|