注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我只是一个人

我爱一个人

 
 
 

日志

 
 

.net(C#版) 计算某个日期是当月的第几周  

2011-10-16 15:06:21|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

说明:

1、每个周从周一开始

2、一般每月一号都并非周一,所以第一个周日之前为一个周

3、遇到一个月一号是周日的,这样的算作上个月最后一天的同一周(不算成本月)

4、遇到一年第一天是周日的同样算作去年最后一天的同一周(不算成本年的)

5、如果一个月一号正好是周日,切传递的时间参数正好是这一天,该天将算作上个月的最后一天为同一周

具体函数如下:

    public  void  GetWeekOfNow(DateTime dt)
    {
        DateTime dd = new DateTime(dt.Year, dt.Month, 1); //每月一号

        int week = (int)dd.DayOfWeek; //获取一号是一周的第几天,0为周日

        if (week != 0)   //如果第一天不是星期天则正常计算
        {
            currentWeek++;//第一周  
            int t1 =8 - week;//用来存储第一周还有多少天(因为要算上当天,所以用8)
            currentWeek += (dt.Day - t1) / 7; //去掉第一周,到现在还有多少周,然后加上第一周
            if ((dt.Day - t1) % 7 > 0)//去掉第一周的天数后取7的余数计算当前的周数
            {
                currentWeek++;//周数加一
            }
        }
        else if (week == 0 && DateTime.Compare(dd.Date, dt.Date) != 0)   //如果第一天不是星期天则正常计算
        {
            currentWeek++;//第一周  
            int t1 = 8 - week;//用来存储第一周还有多少天(因为要算上当天,所以用8)
            currentWeek += (dt.Day - t1) / 7; //去掉第一周,到现在还有多少周,然后加上第一周
            if ((dt.Day - t1) % 7 > 0)//去掉第一周的天数后取7的余数计算当前的周数
            {
                currentWeek++;//周数加一
            }
        }
        else //如果第一天是星期天则跳过,获取上个月的第的最后一天
        {
            if (dt.Month == 1)
            {
                DateTime d_u = new DateTime(dt.AddYears(-1).Year, 12, 31);///上个月的最后一天
                GetWeekOfNow(d_u);//计算上个月的最后一天是第几周
            }
            else
            {
                DateTime d_u = new DateTime(dt.Year, dt.AddMonths(-1).Month, DateTime.DaysInMonth(dt.Year, dt.AddMonths(-1).Month));///上个月的最后一天
                GetWeekOfNow(d_u);//计算上个月的最后一天是第几周
            }
        }
    }

 

调用如下:

     int currentWeek = 0;//记录周数
    Dictionary<String, String> dic = new Dictionary<string, string>();
    protected void Page_Load(object sender, EventArgs e)
    {
     
            dic.Add("1", "一");
            dic.Add("2", "二");
            dic.Add("3", "三");
            dic.Add("4", "四");
            dic.Add("5", "五");
            dic.Add("6", "六");
            dic.Add("7", "七");
            dic.Add("8", "八");
            dic.Add("9", "九");
            dic.Add("10", "十");
            dic.Add("11", "十一");
            dic.Add("12", "十二");
       
        GetWeekOfNow(DateTime.Now);
        Response.Write(dic[currentWeek.ToString()]);
    }

 

完整cs代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;

public partial class Default3 : System.Web.UI.Page
{
    int currentWeek = 0;//记录周数
    Dictionary<String, String> dic = new Dictionary<string, string>();
    protected void Page_Load(object sender, EventArgs e)
    {
     
            dic.Add("1", "一");
            dic.Add("2", "二");
            dic.Add("3", "三");
            dic.Add("4", "四");
            dic.Add("5", "五");
            dic.Add("6", "六");
            dic.Add("7", "七");
            dic.Add("8", "八");
            dic.Add("9", "九");
            dic.Add("10", "十");
            dic.Add("11", "十一");
            dic.Add("12", "十二");
       
        GetWeekOfNow(DateTime.Now);
        Response.Write(dic[currentWeek.ToString()]);
    }
    public  void  GetWeekOfNow(DateTime dt)
    {
        DateTime dd = new DateTime(dt.Year, dt.Month, 1); //每月一号

        int week = (int)dd.DayOfWeek; //获取一号是一周的第几天,0为周日

        if (week != 0)   //如果第一天不是星期天则正常计算
        {
            currentWeek++;//第一周  
            int t1 =8 - week;//用来存储第一周还有多少天(因为要算上当天,所以用8)
            currentWeek += (dt.Day - t1) / 7; //去掉第一周,到现在还有多少周,然后加上第一周
            if ((dt.Day - t1) % 7 > 0)//去掉第一周的天数后取7的余数计算当前的周数
            {
                currentWeek++;//周数加一
            }
        }
        else if (week == 0 && DateTime.Compare(dd.Date, dt.Date) != 0)   //如果第一天不是星期天则正常计算
        {
            currentWeek++;//第一周  
            int t1 = 8 - week;//用来存储第一周还有多少天(因为要算上当天,所以用8)
            currentWeek += (dt.Day - t1) / 7; //去掉第一周,到现在还有多少周,然后加上第一周
            if ((dt.Day - t1) % 7 > 0)//去掉第一周的天数后取7的余数计算当前的周数
            {
                currentWeek++;//周数加一
            }
        }
        else //如果第一天是星期天则跳过,获取上个月的第的最后一天
        {
            if (dt.Month == 1)
            {
                DateTime d_u = new DateTime(dt.AddYears(-1).Year, 12, 31);///上个月的最后一天
                GetWeekOfNow(d_u);//计算上个月的最后一天是第几周
            }
            else
            {
                DateTime d_u = new DateTime(dt.Year, dt.AddMonths(-1).Month, DateTime.DaysInMonth(dt.Year, dt.AddMonths(-1).Month));///上个月的最后一天
                GetWeekOfNow(d_u);//计算上个月的最后一天是第几周
            }
        }
    }

}

 

输出结果如下:

.net(C版)  计算某个日期是当月的第几周 - 坚持下来的人! - 我只是一个人

 

.net(C版)  计算某个日期是当月的第几周 - 坚持下来的人! - 我只是一个人

 

.net(C版)  计算某个日期是当月的第几周 - 坚持下来的人! - 我只是一个人
  评论这张
 
阅读(1497)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017