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;
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值