zoukankan      html  css  js  c++  java
  • .Net 获取当前周是第几周

    最近项目中需要获取当前周是今年的第几周,这东西听起来不难,但是还挺有意思的。

    在中国,一周是从周一开始算,周天结束,在国外就不是这样了,是从周天到周六为一个周。

    有很多种方式去实现在这个功能,下面介绍两种:

    一、使用CultureInfo

    这种方式,只需要修改CultureInfo里面的参数就行了,美国是en-US,其他国家的自行替换就行。

    需要注意的就是,在很多情况下,每年的最后一周是跨年的,一般会当成下一年的第一周来算,这个得需要按业务处理。

    public static int GetWeekNumOfTheYear(DateTime date)
            {
                CultureInfo myCI = new CultureInfo("zh-CN");
                Calendar myCal = myCI.Calendar;
                CalendarWeekRule myCWR = myCI.DateTimeFormat.CalendarWeekRule;
                DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;
                int weekOfYear = myCal.GetWeekOfYear(date, myCWR, myFirstDOW);
                return weekOfYear;
            }

    二、使用GregorianCalendar

    这种也可以获取不同地区的当前周所在的位置,只需要修改GregorianCalendarTypes就行,可以使用 GregorianCalendarTypes.Localized

    public static int GetWeekNumOfTheYear1(DateTime date)
    {
        //获取指定时间是当年的第几周
        GregorianCalendar gc = new GregorianCalendar(GregorianCalendarTypes.USEnglish);
        int weekOfYear = gc.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
        return weekOfYear;
    }

    这两种方式都在System.Globalization 命名空间下,使用起来还是比较方便的。

    调用方式也很简单,如下,因为业务需要,每年的最后一周是跨年的,需要当成下一年的第一周来算。

     public static string GetCurrentWeekNum(DateTime dt)
     {
          string result = string.Empty;
          var dt1 = GetWeekFirstDay(dt);
          var dt2 = GetWeekLastDay(dt);
          //Whether or not to cross the year
          if (dt1.Year == dt2.Year)
          {
              result = string.Format("{0} W {1}", dt1.Year, GetWeekNumOfTheYear(dt).ToString("00"));
          }
          else
          {
              result = string.Format("{0} W 01", dt2.Year);
          }
          return result;
      }
  • 相关阅读:
    文字列をバイトで切る
    把SmartForm转换成PDF
    相对布局和网格布局
    帧布局和表格布局
    计算器布局
    课堂总结和练习
    Android UI组件
    2层导航
    导航
    课堂总结
  • 原文地址:https://www.cnblogs.com/bobo-pcb/p/11541800.html
Copyright © 2011-2022 走看看