「java计算周」计算星期几java

博主:adminadmin 2022-12-20 04:51:04 59

本篇文章给大家谈谈java计算周,以及计算星期几java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java以每个月的周一开始算几周

获取月第一个周一、从当月第一天开始找

第一个周一时间与sourceTime[传入时间对比],sourceTime在第一个周一时间之前表示属于上月的

sourceTime与第一个周一时间差,在以7天计算

java中如何计算一年总共有多少周

计算一年有多少个周的思路:首先,每年至少有52个周,至多有53个周,取决于周一是在哪年(也可以定位周日,这个是由需求决定的),以下是详细代码,其中判断哪一天决定了当周是属于哪一年的逻辑是写在getYearWeekEndDay中。

/**

* 返回指定年度的所有周。List中包含的是String[2]对象br

* string[0]本周的开始日期,string[1]是本周的结束日期。br

* 日期的格式为yyyy-MM-dd。br

* 每年的第一个周,必须包含星期一且是完整的七天。br

* 例如:2009年的第一个周开始日期为2009-01-05,结束日期为2009-01-11。 br

* 星期一在哪一年,那么包含这个星期的周就是哪一年的周。br

* 例如:2008-12-29是星期一,2009-01-04是星期日,哪么这个周就是2008年度的最后一个周。br

*

* @param year 格式 yyyy ,必须大于1900年度 小于9999年

* @return

*/

public static ListString[] getWeeksByYear(final int year){

if(year1900 || year 9999){

throw new NullPointerException("年度必须大于等于1900年小于等于9999年");

}

//实现思路,首先计算当年有多少个周,然后找到每个周的开始日期和结束日期

// Calendar calendar = new GregorianCalendar();

// // 在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。

// calendar.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一

// calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //每周从周一开始

// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。

// calendar.setMinimalDaysInFirstWeek(7); //设置每周最少为7天

// calendar.set(Calendar.YEAR, year); // 设置年度为指定的年

// //首先计算当年有多少个周,每年都至少有52个周,个别年度有53个周

int weeks = getWeekNumByYear(year);

// System.out.println(year+"共有"+weeks+"个周");

ListString[] result = new ArrayListString[](weeks);

for(int i=1;i=weeks;i++){

String[] tempWeek = new String[2];

tempWeek[0] = getYearWeekFirstDay(year,i);

tempWeek[1] = getYearWeekEndDay (year,i);

//或者使用下面的代码,不过发现效率更低

// tempWeek[0] = getDateAdd(firstWeekDay,(i-1)*7+0);

// tempWeek[1] = getDateAdd(firstWeekDay,(i-1)*7+6);

result.add(tempWeek);

// System.out.println(i+"="+tempWeek[0]+"_"+tempWeek[1]);

}

return result;

}

/**

* 计算指定年度共有多少个周。

* @param year 格式 yyyy ,必须大于1900年度 小于9999年

* @return

*/

public static int getWeekNumByYear(final int year){

if(year1900 || year 9999){

throw new NullPointerException("年度必须大于等于1900年小于等于9999年");

}

int result = 52;//每年至少有52个周 ,最多有53个周。

String date = getYearWeekFirstDay(year,53);

if(date.substring(0, 4).equals(year+"")){ //判断年度是否相符,如果相符说明有53个周。

result = 53;

}

return result;

}

/**

* 计算某年某周的开始日期

* @param yearNum 格式 yyyy ,必须大于1900年度 小于9999年

* @param weekNum 1到52或者53

* @return 日期,格式为yyyy-MM-dd

*/

public static String getYearWeekFirstDay(int yearNum,int weekNum) {

if(yearNum1900 || yearNum 9999){

throw new NullPointerException("年度必须大于等于1900年小于等于9999年");

}

Calendar cal = Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//每周从周一开始

// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。

cal.setMinimalDaysInFirstWeek(7); //设置每周最少为7天

cal.set(Calendar.YEAR, yearNum);

cal.set(Calendar.WEEK_OF_YEAR, weekNum);

//分别取得当前日期的年、月、日

return getFormatDate(cal.getTime());

}

/**

* 计算某年某周的结束日期

* @param yearNum 格式 yyyy ,必须大于1900年度 小于9999年

* @param weekNum 1到52或者53

* @return 日期,格式为yyyy-MM-dd

*/

public static String getYearWeekEndDay(int yearNum,int weekNum) {

if(yearNum1900 || yearNum 9999){

throw new NullPointerException("年度必须大于等于1900年小于等于9999年");

}

Calendar cal = Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一

cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);//每周从周一开始

// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。

cal.setMinimalDaysInFirstWeek(7); //设置每周最少为7天

cal.set(Calendar.YEAR, yearNum);

cal.set(Calendar.WEEK_OF_YEAR, weekNum);

return getFormatDate(cal.getTime());

}

java 如何获取 一个月 有多少周

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

思路:

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

随意获取一个时间B

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

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

打印周数

代码:

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

LocalDate localDate = LocalDate.now();

System.out.println("当前时间为:" + localDate);

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

Arrays.stream(Month.values())

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

      .map(month - month.adjustInto(localDate))

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

      .peek(System.out::println)

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

      .map(temporal - ChronoUnit.WEEKS.between(temporal.with(TemporalAdjusters.firstDayOfMonth()), temporal.with(TemporalAdjusters.lastDayOfMonth())))

      // 打印最后的周数

      .forEach(System.out::println);

java计算周的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于计算星期几java、java计算周的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-20,除非注明,否则均为首码项目网原创文章,转载请注明出处。