/// <summary>
/// 获取指定日期,在为一年中为第几周
/// </summary>
/// <param name="dt">指定时间</param>
/// <reutrn>返回第几周</reutrn>
private static int GetWeekOfYear(DateTime dt)
{
   GregorianCalendar gc = new GregorianCalendar();
   int weekOfYear = gc.GetWeekOfYear(dt,CalendarWeekRule.FirstDay, DayOfWeek.Monday);
   return weekOfYear;
}

/// <summary>
/// 求某年有多少周
/// 返回 int
/// </summary>
/// <param name="strYear"></param>
/// <returns>int</returns>
public static int GetYearWeekCount(int strYear)
{
    string returnStr = "";
    System.DateTime fDt = DateTime.Parse(strYear.ToString() + "-01-01");
    int k = Convert.ToInt32(fDt.DayOfWeek);//得到该年的第一天是周几
    if (k == 1)
    {
        int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear;
        int countWeek = countDay / 7 + 1;
        return countWeek;
    }
    else
    {
        int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear;
        int countWeek = countDay / 7 + 2;
        return countWeek;
    }
}

/// <summary>
/// 得到一年中的某周的起始日和截止日
/// 年 nYear
/// 周数 nNumWeek
/// 周始 out dtWeekStart
/// 周终 out dtWeekeEnd
/// </summary>
/// <param name="nYear"></param>
/// <param name="nNumWeek"></param>
/// <param name="dtWeekStart"></param>
/// <param name="dtWeekeEnd"></param>
public static void GetWeek(int nYear, int nNumWeek, out DateTime dtWeekStart, out DateTime dtWeekeEnd)
{
    DateTime dt = new DateTime(nYear, 1, 1);
    dt = dt + new TimeSpan((nNumWeek - 1) * 7, 0, 0, 0);
    dtWeekStart = dt.AddDays(-(int)dt.DayOfWeek + (int)DayOfWeek.Monday);
    dtWeekeEnd = dt.AddDays((int)DayOfWeek.Saturday - (int)dt.DayOfWeek + 1);
}

/// <summary>
/// 求某年有多少周
/// 返回 int
/// </summary>
/// <param name="strYear"></param>
/// <returns>int</returns>
public static int GetYearWeekCount(int strYear)
{
    string returnStr = "";
    System.DateTime fDt = DateTime.Parse(strYear.ToString() + "-01-01");
    int k = Convert.ToInt32(fDt.DayOfWeek);//得到该年的第一天是周几
    if (k == 1)
    {
        int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear;
        int countWeek = countDay / 7 + 1;
        return countWeek;
    }
    else
    {
        int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear;
        int countWeek = countDay / 7 + 2;
        return countWeek;
    }
}

C#开发中常用方法1------日期计算的更多相关文章

  1. C#开发中常用方法3------Cookie的存取

    ---------------------------------------------------------------------------------------------------- ...

  2. C#开发中常用方法2------json转DataTable

    /// <summary>/// 将json转换为DataTable/// </summary>/// <param name="strJson"&g ...

  3. iOS开发中的NSDateFormatter日期格式解析总结

    在工作中,常常遇到将时间解析出来转换成自己相应要求的时间格式,之前也有收集相应的转换格式,如今将自己收集的一部分了做个分享,应该比較完好了,欢迎大家继续补充 年 y 将年份 (0-9) 显示为不带前导 ...

  4. iOS开发中常用方法调用顺序

  5. (转)jQuery Mobile 移动开发中的日期插件Mobiscroll 2.3 使用说明

    (原)http://www.cnblogs.com/hxling/archive/2012/12/12/2814207.html jQuery Mobile 移动开发中的日期插件Mobiscroll ...

  6. [C++基金会]位计算 游戏开发中的应用

    定义的位操作:通俗点说,,位计算是计算机操作二进制整数. 无论整数可以用二的方式来表示进度,不同类型的其长度的整数位的是不一样的.INT8要么char靠8个月2 位表示,INT16或者short是由1 ...

  7. JAVA中日期转换和日期计算的方法

    日期的格式有很多形式,在使用过程中经常需要转换,下面是各种类型转换的使用例子以及日期计算方法的例子. 一.不同格式日期相互转换方法 public class TestDateConvertUtil { ...

  8. 软件开发中oracle查询常用方法总结

    上次新霸哥和大家讲解了一些关于oracle的知识发现大家对oracle还是比较感兴趣的,下面新霸哥就大家比较关系的oracle中常用的查询有哪几种?做个和oracle相关的开发的朋友可能会知道答案,但 ...

  9. Form开发中组件控制的几个常用方法

    转自:http://oracleseeker.com/2009/09/01/graphical_component_control_in_oracle_ebs_form/ 在Oracle EBS 的F ...

随机推荐

  1. 几大主流浏览器内核(Rendering Engine)

    "浏览器内核",英文为"Rendering Engine",也叫"渲染引擎",作用是帮助浏览器来渲染网页的内容,将页面内容和排版代码转换为用 ...

  2. hdu2014青年歌手大赛

    Problem Description 青年歌手大奖赛中,评委会给参赛选手打分.选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分. Input 输入数据有多组,每组占 ...

  3. 纯CSS 图片演示

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  4. cookie (储存在用户本地终端上的数据)

    Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密).定义于 RFC2109 和 2965 中的都已废弃 ...

  5. css中margin的应用

    1.margin用于设置外边距,没有继承性,父元素设置的margin属性子元素不会继承. 2.margin存在重叠的问题. 水平边距永远不会发生重叠. 垂直边距在特定情况下会重叠. 重叠问题都很容易解 ...

  6. BZOJ 3771: Triple

    Description 问所有三/二/一元组可能形成的组合. Sol FFT. 利用生成函数直接FFT一下,然后就是计算,计算的时候简单的容斥一下. 任意三个-3*两个相同的+2*全部相同的+任意两个 ...

  7. yii2——自定义widget

    参考资料:http://www.bsourcecode.com/yiiframework2/how-to-create-custom-widget-in-yii2-0-framework/   如何使 ...

  8. oracle忘记密码

    1.输入命令: sqlplus /nolog ,进入oracle控制台,并输入 conn /as sysdba;以DBA角色进入. 2.连接成功后,输入"select username fr ...

  9. bootStrap树形目录组件

    需求描述 产品添加页面,需要选择车型.在bootStrap的modal上弹出子modal来使用.车型一共有4级目录.要使用目录树.然后分活动和商品两种,需要能够通过不通参数来调用该组件.车型品牌要使用 ...

  10. WebService -- Java 实现之 CXF ( 使用Spring添加拦截器)

    最重要的就是在ApplicationContext.xml下面添加配置 <!-- service provider --> <jaxws:endpoint implementor=& ...