java中如何根据某一周(比如22周)获取这一周是几月几号,星期几。有这样的函数方法吗

java中如何根据某一周(比如22周)获取这一周是几月几号,星期几。有这样的函数方法吗,第1张

我的程序是输入某年某周,输出这一周的开始日期和结束时期,不知是否符合你的需要。至少Java是不直接提供这种方法的。

import javautil;

public class Test31 {

public static void main(String[] args) {

int year, year1, year2, month1, month2, day1, day2, week, sum = 0;

int[] days = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

int i;

Scanner scan = new Scanner(Systemin);

Systemoutprint("年:");

year = scannextInt();

Systemoutprint("周次:");

week = scannextInt();

if (year < 0) {

Systemoutprintln("年份错误,必须大于等于0");

return;

}

if (week < 1 || week > 54) {

Systemoutprintln("周次错误,必须位于 1 53 之间");

return;

}

sum += 7 (week - 1);

//修正总天数

Calendar c = CalendargetInstance();

cset(year, 0, 1);

switch (cget(CalendarDAY_OF_WEEK))

{

case CalendarTUESDAY:

{

sum -= 1;

break;

}

case CalendarWEDNESDAY:

{

sum -= 2;

break;

}

case CalendarTHURSDAY:

{

sum -= 3;

break;

}

case CalendarFRIDAY:

{

sum -= 4;

break;

}

case CalendarSATURDAY:

{

sum -= 5;

break;

}

case CalendarSUNDAY:

{

sum -= 6;

break;

}

default:

break;

}

if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {

days[1] = 29;

}

for (i = 0; i < dayslength; i++) {

if (sum >= days[i]) {

sum -= days[i];

}

else {

break;

}

}

year1 = year;

month1= i + 1;

day1 = sum + 1;

//修改开始日期

if (day1 < 1) {

day1 += days[11];

month1 = 12;

year1--;

}

year2 = year1;

month2 = month1;

day2 = day1 + 6;

if (day2 > days[month1 - 1]) {

day2 -= days[month1 - 1];

month2++;

if (month2 > 12) {

month2 = 1;

year2++;

}

}

Systemoutprintf("%d年第%d周 : %d年%d月%d日 ~ %d年%d月%d日", year, week, year1, month1, day1, year2, month2, day2);

}

}

输出测试:

年:2011

周次:22

2011年第22周 : 2011年5月23日 ~ 2011年5月29日

年:2011

周次:1

2011年第1周 : 2010年12月27日 ~ 2011年1月2日

这是从星期一至星期日。

也可以这样:

public static void main(String[] args){

Scanner scan = new Scanner(Systemin);

Systemoutprint("年:");

int year = scannextInt();

Systemoutprint("周:");

int week = scannextInt();

Calendar c = CalendargetInstance();

cset(CalendarDAY_OF_WEEK, 1);

cset(CalendarWEEK_OF_YEAR, week);

//该周第一天(星期日)所在的日期

int y1 = cget(CalendarYEAR);

int m1 = cget(CalendarMONTH) + 1;

int d1 = cget(CalendarDATE);

cadd(CalendarDATE, 6);

//该周最后一天(星期六)所在的日期

int y2 = cget(CalendarYEAR);

int m2 = cget(CalendarMONTH) + 1;

int d2 = cget(CalendarDATE);

Systemoutprintf("%d年第%d周:%d-%d-%d ~ %d-%d-%d", year, week, y1, m1, d1, y2, m2, d2);

}

这是从星期日开始,如:

年:2011

周:22

2011年第22周:2011-5-22 ~ 2011-5-28

这个可以用dwr框架来做,你可以google一下dwr框架,是前台页面通过js直接调用后台方法的轻量级框架。

至于时间算法

1显示本周,那得算出当前周的周一到周7(国外是周日到周六为一周)是几号到几号。 方法是:

private static HashMap<String, String> getWeekByDate() {

HashMap<String, String> dayMap = new HashMap<String, String>();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式

Calendar cal = CalendargetInstance();

calsetTime(new Date());

// 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了

int dayWeek = calget(CalendarDAY_OF_WEEK);// 获得当前日期是一个星期的第几天

if (1 == dayWeek) {

caladd(CalendarDAY_OF_MONTH, -1);

}

Systemoutprintln("要计算日期为:" + sdfformat(calgetTime())); // 输出要计算日期

calsetFirstDayOfWeek(CalendarMONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一

int day = calget(CalendarDAY_OF_WEEK);// 获得当前日期是一个星期的第几天

caladd(CalendarDATE, calgetFirstDayOfWeek() - day);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值

String imptimeBegin = sdfformat(calgetTime());

Systemoutprintln("所在周星期一的日期:" + imptimeBegin);

dayMapput("Monday", imptimeBegin);

caladd(CalendarDATE, 6);

String imptimeEnd = sdfformat(calgetTime());

Systemoutprintln("所在周星期日的日期:" + imptimeEnd);

dayMapput("SunDay", imptimeEnd);

return dayMap;

}

得到了周一和周日具体是那天,直接去数据库查就OK了,怎么查可以去看下SQL里的between关键字

还有一些写不下,追问一下

Calendar cal = CalendargetInstance();

int i = 1;

//DAY_OF_WEEK获取当前时间是一个星期的第几天,星期日是第一天 星期一是第二天,以此类推

//CalendarMONDAY判断是不是星期1

while(calget(CalendarDAY_OF_WEEK) != CalendarMONDAY){

calset(CalendarDAY_OF_MONTH, i++);//设置这个月的星期1 为几号

}

Date firstMonday = calgetTime();//取得日期和时间

String dtStr = new SimpleDateFormat("MM月dd日")format(firstMonday);//格式化日期

Systemoutprintln(dtStr);

    public static void main(String[] args) throws ParseException {

        int year = 2017;

        Calendar calendar = new GregorianCalendar(year, 0, 1);

        int i = 1;

        while (calendarget(CalendarYEAR) < year + 1) {

            calendarset(CalendarWEEK_OF_YEAR, i++);

            calendarset(CalendarDAY_OF_WEEK, CalendarSUNDAY);

            if (calendarget(CalendarYEAR) == year) {

                Systemoutprintf("星期天:%tF%n", calendar);

            }

            calendarset(CalendarDAY_OF_WEEK, CalendarSATURDAY);

            if (calendarget(CalendarYEAR) == year) {

                Systemoutprintf("星期六:%tF%n", calendar);

            }

        }

    }

以上就是关于java中如何根据某一周(比如22周)获取这一周是几月几号,星期几。有这样的函数方法吗全部的内容,包括:java中如何根据某一周(比如22周)获取这一周是几月几号,星期几。有这样的函数方法吗、java 编程 计算时间(计算本周,本月)、请教个java实现问题,我想得到当前月份的第一个周的星期一是几月几号,怎么实现。谢谢 !等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/10147391.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存