Java根据日期得到当月第几周

Java根据日期得到当月第几周,第1张

Calendar c_begin = CalendargetInstance();

Calendar c_end = CalendargetInstance();

c_beginset(2010, 3, 1); //Calendar的月从0-11,所以4月是3

c_endset(2010, 4, 20); //Calendar的月从0-11,所以5月是4

int count = 0;

while(c_beginbefore(c_end)){

//Systemoutprintln(new javasqlDate(c_begingetTime()getTime()));

if(c_beginget(CalendarDAY_OF_WEEK)==CalendarMONDAY){

count++;

}

if(count == 2){

Systemoutprintln(c_beginget(CalendarYEAR)+"年"+(c_beginget(CalendarMONTH)+1)+"月"+c_beginget(CalendarDATE)+"日");

break;

}

c_beginadd(CalendarDAY_OF_YEAR, 1);

}

可以这样试试,应该能理解吧。如有不懂再问我

获取本周一

 public static Date getNowWeekMonday(Date date) {    

            Calendar cal = CalendargetInstance();    

             calsetTime(date);    

                  

             caladd(CalendarDAY_OF_MONTH, -1); //解决周日会出现 并到下一周的情况    

            calset(CalendarDAY_OF_WEEK, CalendarMONDAY);    

                 

303            return calgetTime();    

        }

获取上周一

public static Date getLastWeekMonday(Date date) {    

             Date a = DateUtilsaddDays(date, -1);    

            Calendar cal = CalendargetInstance();    

            calsetTime(a);    

            caladd(CalendarWEEK_OF_YEAR, -1);// 一周    

            calset(CalendarDAY_OF_WEEK, CalendarMONDAY);    

                  

             return calgetTime();    

        }

获取上周日

public static Date  getLastWeekSunday(Date date) {    

                 

            Date a = DateUtilsaddDays(date, -1);    

           Calendar cal = CalendargetInstance();    

         calsetTime(a);    

           calset(CalendarDAY_OF_WEEK, 1);    

                 

          return calgetTime();    

        }

代码里面有用到 lapachecommon-ang包 你需要下载下 就可以使用

package comrxlamozhidao;

import javatextSimpleDateFormat;

import javautilCalendar;

public class Test {

    public static void main(String[] args) {

        // 获取离当前日期最近的一个星期

        getLastSunday();

    }

    /

      获取离当前日期最近的一个星期天

     /

    public static void getLastSunday() {

        // 获取当前日期

        Calendar calendar = CalendargetInstance();

        // 距离上个周日的差值

        long diffTime = 0L;

        // 今天星期几,注:此处周日 = 1 ,周一 = 2 。。。。

        int dayOfWeek = calendarget(CalendarDAY_OF_WEEK);

        Systemoutprintln("toady:" + dayOfWeek);

        // 如果今天是周日,看需求,是取今天的,还是取上周的

        if (dayOfWeek == 1){

            // 取今天

             // dayOfWeek = 1;

            // 取上周

            dayOfWeek = 8;

        }

        // 计算当前时间距离上周日的时差,此处一周的开始从周日算起,根据需要

        diffTime = (dayOfWeek - 1 )  24  60  60  1000;

        calendarsetTimeInMillis(SystemcurrentTimeMillis() - diffTime);

        //

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Systemoutprintln("lastSunday:" + dateFormatformat(calendargetTime()));

        // 如果一周的开始从周一计算,并且请注释掉上面的  if (dayOfWeek == 1) 处判断,需要重新判断

        if (dayOfWeek == 1){

            // 取今天

            // dayOfWeek = 0;

            // 取上周

            dayOfWeek = 7;

        }

        diffTime = dayOfWeek  24  60  60  1000;

        calendarsetTimeInMillis(SystemcurrentTimeMillis() - diffTime);

        Systemoutprintln("lastSunday:" + dateFormatformat(calendargetTime()));

    }

}

有不明白在问我

用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 : 星期一

你说需要计算一个月有多少周,若是指,一月,二月一直到十二月每个月有多少周的话,可以用Java8的新时间API进行计算,因为里面已经封装了每个月了,但由于每一年每个月的周数可能不同,所以必须还需要一个日期,也就是年,因此得到某年某月的某个时间,就可以相应算出这个时间所在月的第一天和最后一天,然后计算这第一天和最后一天相隔多少个周

思路:

获取所有月份的枚举集合A

随意获取一个时间B

循环所有的月份A,把B的月份依次修改为A中的每个月份,得到修改后的时间集合C

循环C中的所有时间,把每个时间都算出该时间的所在月份的第一天和最后一天,并计算周数

打印周数

代码:

// 随意取一个时间,取了当前时间

LocalDate localDate = LocalDatenow();

Systemoutprintln("当前时间为:" + localDate);

// 根据封装好的月份获取一个一月到十二月的Month流,此时流里的对象为Month

Arraysstream(Monthvalues())

      // 把每个month都调整到当前这个时间里,此时流的对象为LocalDate

      map(month -> monthadjustInto(localDate))

      // 这里方便里观察此时流的数据,把转换后的时间打印了出来

      peek(Systemout::println)

      // 根据时间的所在月的第一天和最后一天作为间隔计算周数

      map(temporal -> ChronoUnitWEEKSbetween(temporalwith(TemporalAdjustersfirstDayOfMonth()), temporalwith(TemporalAdjusterslastDayOfMonth())))

      // 打印最后的周数

      forEach(Systemout::println);

以上就是关于Java根据日期得到当月第几周全部的内容,包括:Java根据日期得到当月第几周、java 如何获取 上周一日期,上周末日期,本周一日期。、在java里怎么取离当前日期最近的一个星期天等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存