java 获取某一月的所有周的日期段(周一到周日)

java 获取某一月的所有周的日期段(周一到周日),第1张

用SimpleDateFormat

import javatextParseException;

import javatextSimpleDateFormat;

import javautilDate;

public class Test030 {

    public static void main(String[] args){

        String s = "2013/9";

        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");

        sdf1setLenient(false);

        SimpleDateFormat sdf2 = new SimpleDateFormat("EEE");

        for(int i = 1; i < 32; i++){

            try {

                Date date = sdf1parse(s + "/" + i);

                Systemoutprintln(sdf1format(date) + " : " + sdf2format(date));

            } catch (ParseException e) {

                //do nothing

            }

        }

                              

    }

                          

}

输入结果:

2013/09/01 : 星期

2013/09/02 : 星期一

2013/09/03 : 星期二

2013/09/04 : 星期三

2013/09/05 : 星期四

2013/09/06 : 星期五

2013/09/07 : 星期六

2013/09/08 : 星期日

2013/09/09 : 星期一

2013/09/10 : 星期二

2013/09/11 : 星期三

2013/09/12 : 星期四

2013/09/13 : 星期五

2013/09/14 : 星期六

2013/09/15 : 星期日

2013/09/16 : 星期一

2013/09/17 : 星期二

2013/09/18 : 星期三

2013/09/19 : 星期四

2013/09/20 : 星期五

2013/09/21 : 星期六

2013/09/22 : 星期日

2013/09/23 : 星期一

2013/09/24 : 星期二

2013/09/25 : 星期三

2013/09/26 : 星期四

2013/09/27 : 星期五

2013/09/28 : 星期六

2013/09/29 : 星期日

2013/09/30 : 星期一

我的理解是如果输入的星期等于当前日期的星期数,那么返回下一个周对应星期数的日期,否则返回当前日期往后最近的一个匹配的星期数的日期。如果我的理解没问题的话下面代码就能满足你的要求:

import javautilCalendar;

import javautilDate;

public class Main {

    public static void main(String[] args) {

        Systemoutprintln(getDateByWeek(2));

    }

    /

      根据星期获取日期

     

      @param week 星期几 1代码星期日,2代表星期一。。。7代表星期六

      @return

     /

    public static Date getDateByWeek(int week) {

        int targetWeek = week;

        Calendar c = CalendargetInstance();

        // 当前日期星期数

        int currWeek = cget(CalendarDAY_OF_WEEK);

        if (currWeek == targetWeek) {

            // 如果所给星期数和当前日期星期数相等则向后推7天

            cadd(CalendarDAY_OF_MONTH, 7);

            return cgetTime();

        }

        do {

            // 向后推一天,直到星期数与所给星期数相同

            cadd(CalendarDAY_OF_MONTH, 1);

        } while (targetWeek != cget(CalendarDAY_OF_WEEK));

        return cgetTime();

    }

}

我的程序是输入某年某周,输出这一周的开始日期和结束时期,不知是否符合你的需要。至少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

public static void main(String[] args) {

Calendar cal = CalendargetInstance();

//Java 中月 1 - 12 月,分别对应是 0 - 11

//设定目前日期为 2000/02/01(29天)

//calset(2000, 1, 1);

Systemoutprintln("现在的时间: " + calgetTime());

Systemoutprintln("本月共有 : " + calgetActualMaximum(CalendarWEEK_OF_MONTH) + " 周");

int date_Count = calgetActualMaximum(CalendarDAY_OF_MONTH);

//Java 中星期 日、一、二、三、四、五、六,分别对应是 1 - 7

if ((calget(CalendarDAY_OF_WEEK)) == 1) {

Systemoutprintln("今天星期天");

} else if ((calget(CalendarDAY_OF_WEEK)) == 2) {

Systemoutprintln("今天星期一");

} else if ((calget(CalendarDAY_OF_WEEK)) == 3) {

Systemoutprintln("今天星期二");

} else if ((calget(CalendarDAY_OF_WEEK)) == 4) {

Systemoutprintln("今天星期三");

} else if ((calget(CalendarDAY_OF_WEEK)) == 5) {

Systemoutprintln("今天星期四");

} else if ((calget(CalendarDAY_OF_WEEK)) == 6) {

Systemoutprintln("今天星期五");

} else if ((calget(CalendarDAY_OF_WEEK)) == 7) {

Systemoutprintln("今天星期六");

}

}

你第一问需要思考一下,你第二问日历类直接get即可!

第一问:

年末与年初进行周与周重叠的时候,获取的是第二年的第一周数字,这个时候其实很简单,因为月份是绝对不相同的对不

直接判断月份即可,头年月份肯定不会第二年月份想等,在同时判断一下,周是否为1,条件同时达到,就叠加52即可!

截个图,你参照日历看一下,分毫不差:

1,获取整年的天数

2,获取整月的天数

3,将信息输出

4,效果如下

5,博客地址参考:>

提倡了一下中文写,

static public void main(String 参数[]){

SimpleDateFormat 格式=new SimpleDateFormat("y年M月d日 E H时m分s秒",LocaleCHINA);

Calendar 日历=CalendargetInstance(LocaleCHINA);

//当前时间,貌似多余,其实是为了所有可能的系统一致

日历setTimeInMillis(SystemcurrentTimeMillis());

Systemoutprintln("当前时间:"+格式format(日历getTime()));

日历set(CalendarDAY_OF_WEEK, CalendarMONDAY);

Systemoutprintln("周一时间:"+格式format(日历getTime()));

}

===========

改到后天测了一下

输出

当前时间:2011年8月31日 星期三 12时32分40秒

周一时间:2011年8月29日 星期一 12时32分40秒

以上就是关于java 获取某一月的所有周的日期段(周一到周日)全部的内容,包括:java 获取某一月的所有周的日期段(周一到周日)、java 根据所填写的星期数获取日期、java中如何根据某一周(比如22周)获取这一周是几月几号,星期几。有这样的函数方法吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9687487.html

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

发表评论

登录后才能评论

评论列表(0条)

保存