Java 获取一年有多少个周 从新年的第一个 星期一 开始算

Java 获取一年有多少个周 从新年的第一个 星期一 开始算,第1张

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 根据星期得到某月的同星期的第一天值、如何获取某一个月的第一天或者第一天是星期几等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9423308.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存