根據時間得到該年第幾周和根據周得到時間區間

2021-08-31 01:51:07 字數 4696 閱讀 8006

根據時間得到該時間是該年第幾周:

select to_number(to_char(to_date('2010-01-12 00:00:00','yyyy-mm-dd hh24:mi:ss'),'fmww')) from dual;

2023年1月12日屬於2023年第2周

select to_number(to_char((sysdate),'fmww')) from dual;

判斷當前時間屬於當前年第幾周

以上情況只是把每年的1月1日作為第一天,如同這個oracle語句的效果:

select to_char(sysdate,'iw') from dual

按照國際標準是吧每年第一周的星期一作為這一年的開頭:

select to_char(sysdate,'ww') from dual

根據第幾周的到時間區間:

1>a跨年:

dateformat df=new ******dateformat("yyyy-mm-dd");

calendar calfirstdayoftheyear = new gregoriancalendar(2010,

calendar.january, 1);

calfirstdayoftheyear.add(calendar.date, 7 * (5-1));

int dayofweek = calfirstdayoftheyear.get(calendar.day_of_week);

calendar calfirstdayinweek = (calendar)calfirstdayoftheyear.clone();

calfirstdayinweek.add(calendar.date,

calfirstdayoftheyear.getactualminimum(calendar.day_of_week) - dayofweek);

date firstdayinweek = calfirstdayinweek.gettime();

system.out.println(2010 + "年第" + 5 + "周的第一天是" + df.format(firstdayinweek));

calendar callastdayinweek = (calendar)calfirstdayoftheyear.clone();

callastdayinweek.add(calendar.date,

calfirstdayoftheyear.getactualmaximum(calendar.day_of_week) - dayofweek);

date lastdayinweek = callastdayinweek.gettime();

system.out.println(2010 + "年第" + 5 + "周的第一天是" + df.format(lastdayinweek));

-----------------------------

2023年第5周的第一天是2010-01-24

2023年第5周的最後一天是2010-01-30

1>b跨年:

dateformat df=new ******dateformat("yyyy-mm-dd");

int x=2010;

int n=53;

calendar cal = new gregoriancalendar(x, calendar.january, 1);

int ff=cal.get(calendar.day_of_week);

int week=cal.get(calendar.week_of_year);

system.out.println("week:"+week);

system.out.println("ff:"+ff);

switch(ff)

system.out.println("cal 1:"+df.format(cal.gettime()));

int dayofweek = cal.get(calendar.day_of_week);

system.out.println("dayofweek :"+dayofweek);

calendar calfirstdayinthisweek = (calendar) cal.clone();

calfirstdayinthisweek.add(calendar.date, cal.getactualminimum(calendar.day_of_week)-dayofweek);

calendar callastdayinthisweek = (calendar) cal.clone();

callastdayinthisweek.add(calendar.date,cal.getactualmaximum(calendar.day_of_week)-dayofweek);

date startdate=calfirstdayinthisweek.gettime();

date enddate=callastdayinthisweek.gettime();

system.out.println("calfirstdayinthisweek:"+df.format(calfirstdayinthisweek.gettime()));

system.out.println("callastdayinthisweek:"+df.format(callastdayinthisweek.gettime()));

system.out.println("startdate:"+df.format(startdate.gettime()));

---------------------------------

week:1

ff:6

cal 1:2010-12-31

dayofweek :6

calfirstdayinthisweek:2010-12-26

callastdayinthisweek:2011-01-01

startdate:2010-12-26

2>不跨年:

long onedate = 1000l * 3600 * 24;

******dateformat format = new ******dateformat( "yyyy-mm-dd ");

calendar cal = calendar.getinstance();

cal.setfirstdayofweek(calendar.monday);

cal.set(calendar.year, 2005);

//最後一周

cal.set(calendar.day_of_year, cal.getactualmaximum(calendar.day_of_year));

date end = cal.gettime();

cal.set(calendar.day_of_week, calendar.monday);

date start = cal.gettime();

system.out.print( "2023年最後一周區間: " + format.format(start));

system.out.println( "-- " + format.format(end) + " 共 " + ((end.gettime() - start.gettime()) / onedate + 1) + "天 ");

//第一周

cal.set(calendar.day_of_year, 1);

cal.set(calendar.year, 2006);

start = cal.gettime();

cal.set(calendar.day_of_week, calendar.sunday);

end = cal.gettime();

system.out.print( "2023年第一周區間: " + format.format(start));

system.out.println( "-- " + format.format(end) + " 共 " + ((end.gettime() - start.gettime()) / onedate + 1) + "天 ");

//第n周

cal.set(calendar.day_of_week, calendar.monday);//需要先設定星期

cal.set(calendar.week_of_year, 20);

start = cal.gettime();

cal.set(calendar.day_of_week, calendar.sunday);

end = cal.gettime();

system.out.print( "2023年第20周區間: " + format.format(start));

system.out.println( "-- " + format.format(end) + " 共 " + ((end.gettime() - start.gettime()) / onedate + 1) + "天 ");

--------------------------------------

2023年最後一周區間: 2005-12-26 -- 2005-12-31 共 6天

2023年第一周區間: 2006-01-01 -- 2006-01-01 共 1天

2023年第20周區間: 2006-05-08 -- 2006-05-14 共 7天

[b]ps:非原創,素材來自網路.[/b]

根據日期計算屬於第幾周 週日是一周的第一天

根據 日期計算屬於第幾周,見 重點是紅色加粗 如果日期是下一年的第一周的時候的解決方案,如果誰有更好的方法,請不吝賜教 根據日期計算屬於第幾周 週日是一周的第一天 param date 格式 yyyy mm dd disp 0 返回yyyyww 1 返回yyyy年ww周 throws parseex...

判斷當前時間是週幾,及本年的第幾周

import datetime import calendar 獲取當天日期值 currentdate datetime.date.today print currentdate year currentdate.year month currentdate.month day currentdat...

vc 根據系統時間得到今後一周日期

最近在專案中需要動態用到當日起最近一周的日期,小小的要求,用時才發現找不到現成的簡便方法。自己便動手寫了乙個簡單的函式,在此記錄,也給有需要的朋友參考。如下 cstring date one,date two,date three,date four,date five,date six,date ...