본문 바로가기

관심꺼리.log/정신노동.dat

C# 날짜관련 함수

MSDN C#

        #region DateFormat 열거형
        /// 
        /// 설  명 : DataFormat 열거형 (TT_DATE : yyyyMMddHHmm, TT_DAY : yyyyMMdd, TT_TIME : HHmmss)
        /// 
        public enum DateFormat
        {
            TT_DATE,  // yyyyMMddHHmm
            TT_DAY,   // yyyyMMdd
            TT_TIME   // HHmmss
        }
        #endregion

        #region 날짜 형식 관련 변환 Method
        /// 
        /// 설  명 : string 날짜(yyyyMMdd) -> DateTime 으로 변환
        /// 
        /// 변환할 string 날짜(yyyyMMdd)</param>
        /// DateTime 날짜
        public static DateTime GetDTDay(string a_sDay)
        {
            DateTime dtDate =
                DateTime.ParseExact(a_sDay, "yyyyMMdd",
                                               System.Globalization.DateTimeFormatInfo.InvariantInfo,
                                               System.Globalization.DateTimeStyles.None);
            return dtDate;
        }

        /// 
        /// 설  명 : string 날짜(yyyyMMdd) -> string 날짜(yy/MM/dd)으로 변환
        /// 
        /// 변환할 string 날짜(yyyyMMdd)</param>
        /// string 날짜(yy/MM/dd)
        public static string GetDTDay2(string a_sDay)
        {
            DateTime dtDate = DateTime.ParseExact(a_sDay,
                                     "yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo,
                                     System.Globalization.DateTimeStyles.None);
            return dtDate.ToString("yy/MM/dd").Replace("-", "/");
        }

        /// 
        /// 설  명 : string 날짜(yyyyMMdd) -> string 날짜(yyyy/MM/dd)으로 변환
        /// 
        /// 변환할 string 날짜(yyyyMMdd)</param>
        /// string 날짜(yyyy/MM/dd)
        public static string GetDTDay3(string a_sDay)
        {
            DateTime dtDate = DateTime.ParseExact(a_sDay,
                                   "yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo,
                                   System.Globalization.DateTimeStyles.None);
            return dtDate.ToString("yyyy/MM/dd").Replace("-", "/");
        }

        /// 
        /// 설  명 : string 날짜(yyyyMMddHHmm) -> DateTime 으로 변환
        /// 
        /// 변환할 string 날짜(yyyyMMddHHmm)</param>
        /// DateTime 날짜
        public static DateTime GetDTDate(string a_sDate)
        {
            DateTime dtDate = DateTime.ParseExact(a_sDate,
                                                           "yyyyMMddHHmm",
                                                           System.Globalization.DateTimeFormatInfo.InvariantInfo,
                                                           System.Globalization.DateTimeStyles.None);
            return dtDate;
        }

        /// 
        /// 설  명 : DateTime -> string 날짜(yyyyMMdd)으로 변환
        /// 
        /// 변환할 날짜 DateTime</param>
        /// string 날짜(yyyyMMdd)
        public static string GetStrDay(DateTime a_odtDateTime)
        {
            return GetStrDate(a_odtDateTime, DateFormat.TT_DAY);
        }

        /// 
        /// 설  명 : DateTime -> string 시간(HHmm)으로 변환
        /// 
        /// 변환할 날짜 DateTime</param>
        /// string 시간(HHmm)
        public static string GetStrTime(DateTime a_odtDateTime)
        {
            return GetStrDate(a_odtDateTime, DateFormat.TT_TIME);
        }

        /// 
        /// 설  명 : DateTime -> string 날짜(yyyyMMddHHmm)으로 변환
        /// 
        /// 변환할 날짜 DateTime</param>
        /// string 날짜(yyyyMMddHHmmss)
        public static string GetStrDate(DateTime a_odtDateTime)
        {
            return GetStrDate(a_odtDateTime, DateFormat.TT_DATE);
        }

        /// 
        /// 설  명 : DateTime -> string 년도(yyyy)으로 변환
        /// 
        /// 변환할 날짜 DateTime</param>
        /// string 년도(yyyy)
        public static string GetStrYear(DateTime a_odtDateTime)
        {
            return a_odtDateTime.Year.ToString().PadLeft(4, '0');
        }

        /// 
        /// 설  명 : DateTime -> string 월(MM)으로 변환
        /// 
        /// 변환할 날짜 DateTime</param>
        /// string 월(MM)
        public static string GetStrMonth(DateTime a_odtDateTime)
        {
            return a_odtDateTime.Month.ToString().PadLeft(2, '0');
        }

        /// 
        /// 설  명 : DateTime -> string 일(dd)으로 변환
        /// 
        /// 변환할 날짜 DateTime</param>
        /// string 일(dd)
        public static string GetStrDay2(DateTime a_odtDateTime)
        {
            return a_odtDateTime.Day.ToString().PadLeft(2, '0');
        }

        /// 
        /// 설  명 : DateTime -> 한글 요일로 변환
        /// 
        /// 변환할 날짜 DateTime</param>
        /// string 한글 요일
        public static string GetStrDayOfWeek(DateTime a_odtDateTime)
        {
            switch (a_odtDateTime.DayOfWeek)
            {
                case DayOfWeek.Monday:
                    return "월";
                case DayOfWeek.Tuesday:
                    return "화";
                case DayOfWeek.Wednesday:
                    return "수";
                case DayOfWeek.Thursday:
                    return "목";
                case DayOfWeek.Friday:
                    return "금";
                case DayOfWeek.Saturday:
                    return "토";
                case DayOfWeek.Sunday:
                    return "일";
            }
            return "";
        }

        /// 
        /// 설  명 : DateTime -> 오전/오후로 변환
        /// 
        /// 변환할 날짜 DateTime</param>
        /// K: 오전/오후, E:AM/PM</param>
        /// string 오전/오후
        public static string GetStrAmPm(DateTime a_odtDateTime, string strLang)
        {
            try
            {
                if (a_odtDateTime.Hour > 12)
                {
                    if (strLang.Equals("K"))
                        return "(오후) ";
                    else
                        return "(PM) ";
                }
                else
                {
                    if (strLang.Equals("K"))
                        return "(오전) ";
                    else
                        return "(AM) ";
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// 
        /// 설  명 : DateTime -> string 날짜(DateFormat)로 변환
        /// 
        /// 변환할 날짜 DateTime</param>
        /// DateFormat 열거형</param>
        /// string 날짜(DateFormat)
        public static string GetStrDate(DateTime a_odtDateTime, DateFormat a_tDateFormat)
        {
            string sEditDate = null;
            DateTime dtDateTime;
            if (a_odtDateTime.Equals(DateTime.MinValue))
            {
                dtDateTime = DateTime.Now;
            }
            else
            {
                dtDateTime = a_odtDateTime;
            }
            string sDay = dtDateTime.ToString("yyyyMMdd");
            string sTime = dtDateTime.ToString("HHmm");

            switch (a_tDateFormat)
            {
                case DateFormat.TT_DATE:
                    sEditDate = sDay + sTime;
                    break;
                case DateFormat.TT_DAY:
                    sEditDate = sDay;
                    break;
                case DateFormat.TT_TIME:
                    sEditDate = sTime;
                    break;
            }
            return sEditDate;
        }

        /// 
        /// 설  명 : DateTime -> string 날짜 포맷에 맞는 string 날짜로 변환
        /// 
        /// 변환할 날짜 DateTime</param>
        /// 변환할 string 날짜 포맷</param>
        /// string 날짜
        public static string GetStrFormatDate(DateTime a_odtDateTime, string a_tDateFormat)
        {

            DateTime dtDateTime;
            try
            {
                if (a_odtDateTime.Equals(DateTime.MinValue))
                {
                    dtDateTime = DateTime.Now;
                }
                else
                {
                    dtDateTime = a_odtDateTime;
                }
                return a_odtDateTime.ToString(a_tDateFormat).Replace("-", "/");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// 
        /// 설  명 : 여러가지 string 날짜를 string 날짜에 맞는 날짜 포맷으로 -> DateTime으로 변환
        /// 
        /// 변환할 string 날짜</param>
        /// 변환할 string 날짜에 맞는 날짜 포맷</param>
        /// DateTime 날짜
        public static DateTime GetDateTimeFormatString(string a_sDate, string a_sFormat)
        {
            try
            {
                DateTime dtDate = DateTime.ParseExact(a_sDate, a_sFormat, System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None);
                return dtDate;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// 
        /// 설  명 : string 날짜(yyyyMMdd)  -> string 날짜(yyyy-MM-dd)로 변환
        /// 
        /// 변환할 string 날짜(yyyyMMdd)</param>
        /// string 날짜(yyyy-MM-dd)
        public static string GetDateTimeFormat(string strDate)
        {
            string strReturn = string.Empty;
            try
            {
                // 변환하려는 날짜가 8자리 이상이어야 함.
                if (strDate.Length > 7)
                {
                    strDate = strDate.Replace("-", "");
                    strReturn = strDate.Substring(0, 4) + "-" + strDate.Substring(4, 2) + "-" + strDate.Substring(6, 2);
                }
                return strReturn;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// 
        /// string 날짜(yyyyMMdd) -> string 날짜(yyyy년 MM월 dd일 수요일)로 변환
        /// 
        /// 변환할 string 날짜(yyyyMMdd)</param>
        /// string 날짜(yyyy년 MM월 dd일 수요일)
        public static string GetQTDate(string strDate)
        {
            switch (strDate.Length)
            {
                case 8:
                    return GetDTDay(strDate).ToString("yyyy년 MM월 dd일 ") + GetStrDayOfWeek(GetDTDay(strDate)) + "요일";
                case 12:
                    return GetDTDate(strDate).ToString("yyyy년 MM월 dd일 ") + GetStrDayOfWeek(GetDTDate(strDate)) + "요일";
                default:
                    return string.Empty;
            }
        }

        /// 
        /// string 날짜(yyyyMMdd) -> string 날짜(yyyy년 MM월 dd일)로 변환
        /// 
        /// string 날짜(yyyyMMdd)</param>
        /// string 날짜(yyyy년 MM월 dd일)
        public static string GetNoticeDate(string strDate)
        {
            return GetDTDay(strDate).ToString("yyyy년 MM월 dd일");
        }
        #endregion