• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#中与SQL中求本周是本年的第几周

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
C#中与SQL中求本周是本年的第几周

 

    最近的一个 周报表 既需要C#求本周是今年的第几周 又需要在存储过程里 通过sql求。

在 sql里 有函数可以直接求出。但是在C#里 没有直接的属性或函数,必须自己来算。

C#里可以知道今天是本周的第几天,还可以知道今天是本年的第几天。这样我们就可以求出本周是今年的第几周。 有两种思路:

1、 可以先算出 上周末是哪天,然后算出上周是第几周,(算法是: 用7整除上周末在今年的天数 如果能被整除则 结果就是上周在今年的第几周,否则 结果+1 ) 最后再 + 1, 就是本周的顺序。

例如:

 

代码
private int DatePart(System.DateTime dt)   
{   
    
int weeknow = Convert.ToInt32(dt.DayOfWeek);//今天星期几   
    int daydiff = (-1* (weeknow + 1);//今日与上周末的天数差   
    int days = System.DateTime.Now.AddDays(daydiff).DayOfYear;//上周末是本年第几天   
    int weeks = days / 7;   
    
if (days % 7 != 0)   
    {   
        weeks
++;   
    }   
    
//此时,weeks为上周是本年的第几周   
    return (weeks + 1);   
}  

 

 

2、 先计算今年的1月1日是一周中的第几天,然后用 今天在今年的天数 - 它 + 7,最后直接 用7除这个数 有余数则+1 即为本周的顺序,整除则不加1。

代码就不列了。

在sql中,利用函数 DATEPART(week,getdate()) 直接得到结果。

需要注意的是: DATEPART(dw,getdate()) 得到的 weekday结果是 1--7

而 C# datetime1.DayOfWeek 得到的 是 0--6

不过,有一点他们是一样的 就是 Sunday 都是本周的第一天。

最后,通过这些我们可以判断

 

本周的起止日期:

sqlserver中

WeekStart = CONVERT(VARCHAR(100),(getdate()-DATEPART(dw,getdate()) +1),23)

WeekEnd = CONVERT(VARCHAR(100),(getdate()-DATEPART(dw,getdate()) +7),23)

C#中 就不用说了

WeekStart = DateTime.Now.AddDays(-(int)DateTime.Now.DayOfWeek).ToString("yyyy-MM-dd")

WeekEnd = DateTime.Now.AddDays(6-(int)DateTime.Now.DayOfWeek).ToString("yyyy-MM-dd")

 

http://developer.51cto.com/art/200511/11126_2.htm

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# / VB.NET合并PDF指定页发布时间:2022-07-13
下一篇:
使用C#进行点对点通讯和文件传输(通讯基类部分)发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap