public getWeekCount(Date date){
// 获取日历类实例
javautilCalendar calendar = javautilCalendargetInstance();
// 设置时间
calendarsetTime(date);
// 设置周一为每周第一天
calendarsetFirstDayOfWeek(javautilCalendarMONDAY);
// 返回当年最大周数
return calendargetActualMaximum(javautilCalendarWEEK_OF_YEAR);
}
给你个别人写的自定义函数的例子,其实这问题有点复杂
create function fn_getwk(
@year int,--输入显示的年份
@month int, --输入显示的月份
@type bit=0 --指定每周的第一天,默认为星期日(中国习惯),如果参数为1就是星期一为每周的第一天
) returns @t table(
周数 nvarchar(10),
开始日期 varchar(10),
结束日期 varchar(10)
) as
begin
declare @d datetime
set @d=dateadd(wk,datediff(wk,'1900',cast(ltrim(@year10000+@month100+1) as datetime)),'1900')+@type
;with t as
(
select top (datediff(dd,ltrim(@year10000+@month100+1),ltrim(@year10000+(@month+1)100+1)))
[date]=cast(ltrim(@year10000+@month100+1) as datetime)-1
+row_number()over(order by getdate())
from sysobjects
)
insert @t
select
case
when [date] between @d and @d+5 then '第一周'
when [date] between @d+6 and @d+12 then '第二周'
when [date] between @d+13 and @d+19 then '第三周'
when [date] between @d+20 and @d+26 then '第四周'
when [date] between @d+27 and @d+33 then '第五周'
else '第六周'
end AS 周数,
convert(varchar,min([date]),23) 开始日期,
convert(varchar,max([date]),23) 结束日期
from t
group by
case
when [date] between @d and @d+5 then '第一周'
when [date] between @d+6 and @d+12 then '第二周'
when [date] between @d+13 and @d+19 then '第三周'
when [date] between @d+20 and @d+26 then '第四周'
when [date] between @d+27 and @d+33 then '第五周'
else '第六周'
end
order by 2
return
end
GO
select from fn_getwk(2011,3,0)
/
周数 开始日期 结束日期
---------- ---------- ----------
第一周 2010-05-01 2010-05-01
第二周 2010-05-02 2010-05-08
第三周 2010-05-09 2010-05-15
第四周 2010-05-16 2010-05-22
第五周 2010-05-23 2010-05-29
第六周 2010-05-30 2010-05-31
(6 行受影响)
/
select from fn_getwk(2010,5,1)
/
周数 开始日期 结束日期
---------- ---------- ----------
第一周 2010-05-01 2010-05-02
第二周 2010-05-03 2010-05-09
第三周 2010-05-10 2010-05-16
第四周 2010-05-17 2010-05-23
第五周 2010-05-24 2010-05-30
第六周 2010-05-31 2010-05-31
/
当周的第一天:1求出今天是周几 int week = Calendarget(CalendarDAY_OF_WEEK); 如果week等于1,那么当天的日期就是这周的第一天的日期,否则这周的第一天的日期就是当天的日期-week+1 同理可以求今天是几,用CalendarDAY_OF_MONTH
/
求某年下的第几个星期的日期 返回javauiltDate 类型日期 时间time为当前机器时间
@param year 要获得的年
@param week 第几个星期
@param flag 是否是第一天还是最后一天,当为true时返回第一天,false则返回最后一天
@return javauiltDate 类型日期
@例如 getDayByWeek(2002,2,true) 返回Tue Jan 08 14:11:57 CST 2002
/
public static Date getDayByWeek(int year,int week,boolean flag)
{
Calendar cal=CalendargetInstance();
calset(CalendarYEAR,year);
calset(CalendarWEEK_OF_YEAR,week);
if(!flag)
calsetTimeInMillis(calgetTimeInMillis()+62460601000);
return calgetTime();
}
以上就是关于Java 获取一年有多少个周 从新年的第一个 星期一 开始算全部的内容,包括:Java 获取一年有多少个周 从新年的第一个 星期一 开始算、SQL 根据星期得到某月的同星期的第一天值、如何获取某一个月的第一天或者第一天是星期几等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)