您所在的位置: 程序员家园 -> 家园博客 ->
 
在哪里摔倒
就在哪里自己爬起来

用户登录

查  找

最新评论

最新留言

常用网站

网易邮箱 GMAIL  

百度搜索 MSDN

霏凡软件 BT精品

影视帝国 射 手 网

电驴下载 全 库 网

友情连接

茄菲的窝 冰冰博客

枫叶飘零 玫  瑰

ACEN 云 豹 子

统  计



取一个指定的日期是当月的第几周
狼子 发表于 2007-5-24 19:01:00 阅读全文 | 回复(0) | 引用通告 | 编辑  asp.net查看本站使用过本标签的日志查看本站使用过本标签的用户

有两种计算方法的,一个就是对这个月计算,一号开始计算是第一周的第一天

另一种计算方法,就是和windows的“日期时间属性”里面的那个日期一样,一号是第一周,就是不一定是第一天,他是星期几,他就是第几天

下面的是对第二种计算方法的计算,如果要取第一种计算方法,设置firstDayInWeek=0就可以了

调用

DateTime dt;
        int w = 0, firstDayInWeek;  //firstDayInWeek记录1号是星期几
        dt = Calendar1.SelectedDate;
        hfMTime.Value = dt.ToString("yyyy-MM-dd");

        //取这个月第一天是一个星期里的第几天
        firstDayInWeek = getFirstDayInWeek(Convert.ToDateTime(dt.ToString("yyyy-MM") + "-01"));

        //取当前日期是当月第几周
        w = getWeekIndex(dt, firstDayInWeek);

用了两个自定义方法

private int getFirstDayInWeek(DateTime dt)
    {
        int firstDayInWeek = 0;
        switch (dt.DayOfWeek.ToString())
        {
            case "Sunday":
                firstDayInWeek = 0;
                break;
            case "Monday":
                firstDayInWeek = 1;
                break;
            case "Tuesday":
                firstDayInWeek = 2;
                break;
            case "Wednesday":
                firstDayInWeek = 3;
                break;
            case "Thursday":
                firstDayInWeek = 4;
                break;
            case "Friday":
                firstDayInWeek = 5;
                break;
            case "Saturday":
                firstDayInWeek = 6;
                break;
        }
        return firstDayInWeek;
    }


   

private int getWeekIndex(DateTime dt, int firstDayInWeek)
    {
        /* http://www.tiantiansoft.com/bbs/dispbbs.asp?boardID=40&ID=152279 */
        //取dt是这个月的第几周
        int i=0,m;
        m=dt.Month;
        if (dt.AddDays(-7 + firstDayInWeek).Month < m)
        {
            i = 1;
        }
        else if (dt.AddDays(-14 + firstDayInWeek).Month < m)
        {
            i = 2;
        }
        else if (dt.AddDays(-21 + firstDayInWeek).Month < m)
        {
            i = 3;
        }
        else if (dt.AddDays(-28 + firstDayInWeek).Month < m)
        {
            i = 4;
        }
        else
        {
            i = 5;
        }
        return i;
    }

发表评论:

    昵称:
    密码:
    主页:
    标题:
Powered by Oblog.