C# 日期轉成周數

如輸入190101則會輸出1901,表示19年的第一週

 private string DataCodDateToWeek(string Date)
        {
            string YearWeek;
            //Date 190101
            int Year = DGConvert.Int("20" + Date.Substring(0, 2));
            int Week = DGConvert.Int(Date.Substring(2, 2));
            int Day = DGConvert.Int(Date.Substring(4, 2));

            var dt = new DateTime(Year, Week, Day);
            //找到今年的第一天是周幾
            int firstWeekend = Convert.ToInt32(DateTime.Parse(dt.Year + "-1-1").DayOfWeek);
            //獲取第一週的差額,如果是週日,則firstWeekend爲0,第一週也就是從周天開始的。
            int weekDay = firstWeekend == 0 ? 1 : (7 - firstWeekend + 1);
            //獲取今天是一年當中的第幾天
            int currentDay = dt.DayOfYear;
            //(今天 減去 第一週週末)/7 等於 距第一週有多少周 再加上第一週的1 就是今天是今年的第幾周了
            //    剛好考慮了惟一的特殊情況就是,今天剛好在第一週內,那麼距第一週就是0 再加上第一週的1 最後還是1
            int current_week = Convert.ToInt32(Math.Ceiling((currentDay - weekDay) / 7.0)) + 1;
            YearWeek = Date.Substring(0, 2) + current_week.ToString();

            return YearWeek;
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章