CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

如何判断某个日期是某个月的最后一周??

楼主seabird125(海鸥)2005-05-10 11:13:11 在 VB / 基础类 提问

有这方面的函数吗 问题点数:80、回复次数:17Top

1 楼CPLiu(老了)回复于 2005-05-10 11:30:13 得分 0

datediffTop

2 楼viena(维也纳N02)回复于 2005-05-10 11:33:34 得分 40

'假设判断的日期型date1  
   
  If   DatePart("ww",   DateSerial(Year(date1),   Month(date1)   +   1,   1))   =   DatePart("ww",   date1)   Then  
          MsgBox   "月的最后一周"  
  End   If  
   
  If   Weekday(DateSerial(Year(date1),   Month(date1)   +   1,   0))   =   7   And   DatePart("ww",   DateSerial(Year(date1),   Month(date1)   +   1,   1))   =   DatePart("ww",   date1)   +   1   Then  
          MsgBox   "月的最后一周"  
  End   IfTop

3 楼viena(维也纳N02)回复于 2005-05-10 11:50:51 得分 0

以上是按默认的周日作为一周的开始  
  Top

4 楼seabird125(海鸥)回复于 2005-05-10 11:52:35 得分 0

好象还是有问题,比如     2005   12.26是属于最后一周的...怎么没有算在内呢??Top

5 楼seabird125(海鸥)回复于 2005-05-10 11:54:32 得分 0

我希望是周日为一周的开始啊~~~..12.31号也不是最后一周。..好象就只12月的有问题。.我测试了一下Top

6 楼viena(维也纳N02)回复于 2005-05-10 11:56:18 得分 0

'解释一下以上代码  
   
  DatePart("ww",   date1)  
  判断date1是一年的第几周  
   
  如果date1的周数与下月1日的周数相同,则是月的最后一周  
  如果下月1日的周数是date1的周数+1而且当月最后一天是周的最后一天,则是月的最后一周Top

7 楼viena(维也纳N02)回复于 2005-05-10 12:01:27 得分 0

是有漏洞,按年第几周算的,下一年是第一周了,不再是现在周数加1Top

8 楼icedut(冰-装修进行中)回复于 2005-05-10 12:02:51 得分 0

SET   DATEFIRST  
  将一周的第一天设置为从   1   到   7   之间的一个数字。  
   
  语法  
  SET   DATEFIRST   {   number   |   @number_var   }    
   
  参数  
  number   |   @number_var  
   
  是一个整数,表示一周的第一天,可以是下列值中的一个。  
   
  值   一周的第一天是    
  1   星期一    
  2   星期二    
  3   星期三    
  4   星期四    
  5   星期五    
  6   星期六    
  7(默认值,美国英语)   星期日    
   
  Top

9 楼icedut(冰-装修进行中)回复于 2005-05-10 12:05:37 得分 0

是否可以这样判断  
   
  先得到某个月的最后一天,在得到最后一天的星期数  
  在得到某个日期的星期数,如果这两个星期数一样那就ok了Top

10 楼icedut(冰-装修进行中)回复于 2005-05-10 12:11:58 得分 0

转贴  
  作者Blog:http://blog.csdn.net/playyuer/  
  create   function   udf_WeekOfMonth(@Date   datetime)  
  --   返回   @Date   是所在月的第几周   周日是当周的最后一天  
  returns   integer  
  as  
  begin  
  return   datediff(week  
                                  ,case   when   (@@Datefirst   +   datepart(weekday,dateadd(month,datediff(month,0,@Date),0)))   %   7   =   1  
                                                        then   dateadd(month,datediff(month,0,@Date),0)   -   1  
                                              else  
                                                        dateadd(month,datediff(month,0,@Date),0)  
                                              end  
                                  ,case   when   (@@Datefirst   +   datepart(weekday,@Date))   %   7   =   1  
                                                        then   @Date-1  
                                              else   @Date  
                                    end  
                                )   +   1  
  end  
   
  go  
  Top

11 楼viena(维也纳N02)回复于 2005-05-10 12:34:15 得分 0

'再加个判断加好了  
   
  Dim   date1   As   Date  
  date1   =   "2005-12-25"  
   
  Dim   lastDayMonth   As   Date,   lastDayYear   As   Date,   FirstDayNextMonth   As   Date  
  lastDayMonth   =   DateSerial(Year(date1),   Month(date1)   +   1,   0)   '月的最后一天  
  lastDayYear   =   DateSerial(Year(date1)   +   1,   1,   0)   '年的最后一天  
  FirstDayNextMonth   =   DateSerial(Year(date1),   Month(date1)   +   1,   1)   '下月第一天  
   
   
  If   DatePart("ww",   FirstDayNextMonth)   =   DatePart("ww",   date1)   Then  
          MsgBox   "最后一周"  
  End   If  
  If   Weekday(lastDayMonth)   =   7   And   (DatePart("ww",   FirstDayNextMonth)   =   DatePart("ww",   date1)   +   1)   Then  
          MsgBox   "最后一周"  
  End   If  
  If   Weekday(lastDayMonth)   =   7   And   DatePart("ww",   date1)   =   DatePart("ww",   lastDayYear)   And   DatePart("ww",   FirstDayNextMonth)   =   1   Then  
          MsgBox   "最后一周"  
  End   IfTop

12 楼icedut(冰-装修进行中)回复于 2005-05-10 12:37:30 得分 0

和星星学到了DateSerial   函数  
  以前还真不知道这个函数  
               
  Top

13 楼viena(维也纳N02)回复于 2005-05-10 12:38:17 得分 0

加的这个是  
  判断(当月最后一天是周的最后一天)且这一周是年的最后一周(等于年最后一天的周数),下月1日是第一周Top

14 楼icedut(冰-装修进行中)回复于 2005-05-10 13:32:46 得分 0

如果日期和当月最后一天的周数相同,不就是最后一周了么  
   
  这样判断应该简单些吧Top

15 楼icedut(冰-装修进行中)回复于 2005-05-10 13:35:38 得分 40

Dim   date1   As   Date  
  date1   =   "2005-12-25"  
   
  Dim   lastDayMonth   As   Date,    
  lastDayMonth   =   DateSerial(Year(date1),   Month(date1)   +   1,   0)   '月的最后一天  
   
  If   DatePart("ww",   lastDayMonth   )   =   DatePart("ww",   date1)   Then  
          MsgBox   "最后一周"  
  End   If  
   
   
  这样应该也对巴,借用星星的ddTop

16 楼viena(维也纳N02)回复于 2005-05-10 13:36:48 得分 0

:$  
   
  冰MM聪明啊,呵呵  
  If   DatePart("ww",   DateSerial(Year(date1),   Month(date1)   +   1,   0))   =   DatePart("ww",   date1)   Then  
          MsgBox   "月的最后一周"  
  End   If  
  Top

17 楼icedut(冰-装修进行中)回复于 2005-05-10 13:40:35 得分 0

我也聪明一回:)Top

相关问题

  • 日期判断
  • 求sql语句:如何判断某个日期是在某个日期集中......请看正文,谢谢!
  • 求sql语句:如何判断某个日期是在某个日期集中......请看正文,谢谢!
  • JDK里有关时间的类里有么判断某个日期是不是有效日期的方法?
  • 判断给定日期下所在月分有多少天!
  • 怎么判断一个日期是当月最后一天
  • 怎么判断日期是不是本月?
  • 如何判断某日期是某年某月的第几周
  • -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=怎么判断日期?-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  • 关于日期的判断

关键词

  • date
  • datepart
  • datefirst
  • 判断
  • dateserial
  • ww
  • 月
  • month
  • 第几
  • datediff

得分解答快速导航

  • 帖主:seabird125
  • viena
  • icedut

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo