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


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

    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种方式简便,结果都相同。

  • 相关阅读:
    command
    【MyBatis笔记05】MyBatis中常见的几种查询结果类型介绍
    基于神经网络的推荐算法,协同过滤推荐算法python
    某问答社区App x-zse-96签名分析
    10.12广州见 | 第十六届智慧城市大会报名通道全面开启
    多旋翼集群的分散时空轨迹规划
    基于VTD自带的场景 进行场景搭建
    Lua教程
    hive从入门到放弃(三)——DML数据操作
    ssh远程连接不了虚拟机ubuntu
  • 原文地址:https://blog.csdn.net/flysh05/article/details/126651543