美文网首页
C# 获取当前年月日星期第几周等信息

C# 获取当前年月日星期第几周等信息

作者: Ritchie_Li | 来源:发表于2022-09-01 21:10 被阅读0次

    本来有一个需求,需获取当前时间是本年度的第几周。

    1. 获取当前日期年月日

    简单的使用属性即可

    var dt = DateTime.Now;

    Console.WriteLine("年:" + dt.Year);

    Console.WriteLine("月: " + dt.Month);

    Console.WriteLine("日:" + dt.Day);

    输出:

    年:2022

    月: 9

    日:1

    2. 获取当前星期几

    获取英文星期几

    var wk = dt.DayOfWeek;

    Console.WriteLine("星期:" + wk);

    输出:

    星期:Thursday

    获取星期几用数字表示

    int k = (int)DateTime.Now.DayOfWeek;//获取当前时间

    Console.WriteLine("星期:" + k);

    输出:

    星期:4

    将星期几转换为中文

    string[] weekdays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };

    string wkCN = weekdays[Convert.ToInt32(DateTime.Now.DayOfWeek)];

    Console.WriteLine("星期:" + wkCN);

    输出:

    星期:星期四

    3. 获取当前时间是第几周

    方式1:使用总天数除以7

            public static string GetTheWeekNum()

            {

                // 获取当年1月1日的 时间

                DateTime dateTime = new DateTime(DateTime.Now.Year, 1, 1);

                //获取当前时间 与第一天的 天数

                int dayCount = (int)(DateTime.Now - dateTime).TotalDays;

                //目标日期距离该年第一周第一天的天数(sunday为0,monday为1)

                dayCount += Convert.ToInt32(dateTime.DayOfWeek);

                //获取大于或等于最小整数

                return Math.Ceiling(dayCount / 7.0).ToString();

            }

    Console.WriteLine("第" + GetWeekIndexByYear(dt) + " 周");

    输出:

    第36 周

    方式2:直接使用系统公历对象

        public static string GetTheWeekNum2()

            {

                //创建公历日历对象

                GregorianCalendar gregorianCalendar = new GregorianCalendar();

                //获取指定日期是周数 CalendarWeekRule指定 第一周开始于该年的第一天,DayOfWeek指定每周第一天是星期几

                int weekOfYear = gregorianCalendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Monday);

                return weekOfYear.ToString();

            }

    输出:

    第36 周

    方式3:

            public static int GetWeekIndexByYear(DateTime dt)

            {

                //当前时间当年的第一天

                DateTime time = Convert.ToDateTime(dt.ToString("yyyy") + "-01-01");

                TimeSpan ts = dt - time;

                //当年第一天是星期几

                int firstDayOfWeek = (int)time.DayOfWeek;

                //获取当前时间已过的总天数(四舍五入)

                int day = int.Parse(ts.TotalDays.ToString("F0")) + 1;

                //今年第一天星期日

                if (firstDayOfWeek == 0)

                {

                    day--;     //总天数减1

                }

                else

                {

                    day = day - (7 - firstDayOfWeek + 1);   //减去第一周的天数

                }

                int thisDayOfWeek = (int)dt.DayOfWeek;  //当前日期的星期

                if (thisDayOfWeek == 0)       //星期日直接减7天

                {

                    day = day - 7;

                }

                else

                {

                    day = day - thisDayOfWeek;

                }

                //第一个星期完整的7天+ 当前时间这个星期的7天 除以7

                int week = (day + 7 + 7) / 7;

                return week;

            }

    输出:

    第36 周

    第2种方式简便,结果都相同。

    相关文章

      网友评论

          本文标题:C# 获取当前年月日星期第几周等信息

          本文链接:https://www.haomeiwen.com/subject/yqisnrtx.html