java周转月的简单介绍

博主:adminadmin 2023-01-28 01:18:07 239

今天给各位分享java周转月的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

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程序,显示本年中给定月份的月历,按照周格式输出。

写了个简明的,

import java.util.Calendar;

import java.util.Scanner;

public class Test {

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

Calendar c = Calendar.getInstance();

Scanner sc = new Scanner(System.in);

System.out.println("请输入年份:");

int year= sc.nextInt();

c.set(Calendar.YEAR, year);

c.set(Calendar.MONTH, Calendar.JANUARY);

c.set(Calendar.DAY_OF_MONTH, 1);

while(c.get(Calendar.YEAR)==year){

int wday=c.get(Calendar.DAY_OF_WEEK);

int mday=c.get(Calendar.DAY_OF_MONTH);

if(mday==1){

System.out.println("\n日\t一\t二\t三\t四\t五\t六\t第"+(c.get(Calendar.MONTH)+1)+"月");

System.out.println("---------------------------------------------------");

for(int i=0;iwday-1;i++) System.out.print(" \t");

}

System.out.print(mday+"\t");

if(wday==7) System.out.println();

c.add(Calendar.DAY_OF_YEAR, 1);

}

}

}

=======

请输入年份:

2012

日 一 二 三 四 五 六 第1月

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

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30 31

日 一 二 三 四 五 六 第2月

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

1 2 3 4

5 6 7 8 9 10 11

12 13 14 15 16 17 18

19 20 21 22 23 24 25

26 27 28 29

日 一 二 三 四 五 六 第3月

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

1 2 3

4 5 6 7 8 9 10

11 12 13 14 15 16 17

18 19 20 21 22 23 24

25 26 27 28 29 30 31

日 一 二 三 四 五 六 第4月

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

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30

日 一 二 三 四 五 六 第5月

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

1 2 3 4 5

6 7 8 9 10 11 12

13 14 15 16 17 18 19

20 21 22 23 24 25 26

27 28 29 30 31

日 一 二 三 四 五 六 第6月

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

1 2

3 4 5 6 7 8 9

10 11 12 13 14 15 16

17 18 19 20 21 22 23

24 25 26 27 28 29 30

日 一 二 三 四 五 六 第7月

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

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30 31

日 一 二 三 四 五 六 第8月

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

1 2 3 4

5 6 7 8 9 10 11

12 13 14 15 16 17 18

19 20 21 22 23 24 25

26 27 28 29 30 31

日 一 二 三 四 五 六 第9月

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

1

2 3 4 5 6 7 8

9 10 11 12 13 14 15

16 17 18 19 20 21 22

23 24 25 26 27 28 29

30

日 一 二 三 四 五 六 第10月

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

1 2 3 4 5 6

7 8 9 10 11 12 13

14 15 16 17 18 19 20

21 22 23 24 25 26 27

28 29 30 31

日 一 二 三 四 五 六 第11月

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

1 2 3

4 5 6 7 8 9 10

11 12 13 14 15 16 17

18 19 20 21 22 23 24

25 26 27 28 29 30

日 一 二 三 四 五 六 第12月

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

1

2 3 4 5 6 7 8

9 10 11 12 13 14 15

16 17 18 19 20 21 22

23 24 25 26 27 28 29

30 31

java 根据输入的年月计算出这个月有几周

import java.util.Calendar;

import java.util.Date;

import java.text.SimpleDateFormat;

import java.text.ParsePosition;

import java.util.GregorianCalendar;

/**

* pTitle: /p

*

* pDescription: /p

*

* pCopyright: Copyright (c) 2005/p

*

* pCompany: /p

*

* @author not attributable

* @version 1.0

*/

public class Untitled1

{

public Untitled1()

{

}

/**

* 判断是否润年

*

* @param ddate

* @return

*/

public static boolean isLeapYear(String ddate) {

/**

* 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年

* 3.能被4整除同时能被100整除则不是闰年

*/

Date d = strToDate(ddate);

GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();

gc.setTime(d);

int year = gc.get(Calendar.YEAR);

if ((year % 400) == 0)

return true;

else if ((year % 4) == 0) {

if ((year % 100) == 0)

return false;

else

return true;

} else

return false;

}

/**

* 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数

*/

public static String getNextDay(String nowdate, String delay) {

try{

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

String mdate = "";

Date d = strToDate(nowdate);

long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60;

d.setTime(myTime * 1000);

mdate = format.format(d);

return mdate;

}catch(Exception e){

return "";

}

}

/**

* 将短时间格式字符串转换为时间 yyyy-MM-dd

*

* @param strDate

* @return

*/

public static Date strToDate(String strDate) {

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

ParsePosition pos = new ParsePosition(0);

Date strtodate = formatter.parse(strDate, pos);

return strtodate;

}

/**

* 获取一个月的最后一天

*

* @param dat

* @return

*/

public static String getEndDateOfMonth(String dat) {// yyyy-MM-dd

String str = dat.substring(0, 8);

String month = dat.substring(5, 7);

int mon = Integer.parseInt(month);

if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) {

str += "31";

} else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) {

str += "30";

} else {

if (isLeapYear(dat)) {

str += "29";

} else {

str += "28";

}

}

return str;

}

/**

* 根据一个日期,返回是星期几的字符串

*

* @param sdate

* @return

*/

public static String getWeek(String sdate) {

// 再转换为时间

Date date = strToDate(sdate);

Calendar c = Calendar.getInstance();

c.setTime(date);

// int hour=c.get(Calendar.DAY_OF_WEEK);

// hour中存的就是星期几了,其范围 1~7

// 1=星期日 7=星期六,其他类推

return new SimpleDateFormat("EEEE").format(c.getTime());

}

public static String getWeekStr(String sdate){

String str = "";

str = getWeek(sdate);

if("1".equals(str)){

str = "星期日";

}else if("2".equals(str)){

str = "星期一";

}else if("3".equals(str)){

str = "星期二";

}else if("4".equals(str)){

str = "星期三";

}else if("5".equals(str)){

str = "星期四";

}else if("6".equals(str)){

str = "星期五";

}else if("7".equals(str)){

str = "星期六";

}

return str;

}

public static String getNowMonth(String sdate) {

// 取该时间所在月的一号

//sdate = sdate.substring(0, 8) + "01";

sdate = sdate + "-01";

// 得到这个月的1号是星期几

Calendar c = Calendar.getInstance();

Date date = strToDate(sdate);

c.setTime(date);

int u = c.get(Calendar.DAY_OF_WEEK);

String newday = getNextDay(sdate, (1 - u) + "");

return newday;

}

public static String getMonthDate(String sdate) {

// 取该时间所在月的一号

//sdate = sdate.substring(0, 8) + "01";

sdate = sdate + "-01";

// 得到这个月的1号是星期几

Calendar c = Calendar.getInstance();

Date date = strToDate(sdate);

c.setTime(date);

int u = c.get(Calendar.DAY_OF_WEEK);

// for(int i=0;i)

String edate=getEndDateOfMonth(sdate);

String newday;

newday = getNextDay(sdate, (1 - u) + "");

String week;

int i=0,j=1;

System.out.println();

do

{

newday=getNextDay(sdate,""+i++);

week=getWeek(newday);

if(!week.equals("星期日")!week.equals("星期六"))

{

System.out.println("第"+(j)+"周");

System.out.print(newday);

System.out.print(week);

System.out.println();

}

if(week.equals("星期六"))j++;

}

while(!newday.equals(edate));

return newday;

}

static public void main(String[] args)

{

getMonthDate("2011-05");

}

}

java计算两个时间相隔月数,考虑闰年

/**

* 判断平闰年方法

*/

public void pingrunnian() {

int year = 0;

//从组件处得到年份(这里是用下拉菜单做的)

if (jtf3.getSelectedIndex() 0) {

year = (Integer) jtf3.getSelectedItem();

}

int month = 0;

//从组件处得到月份(这里是用下拉菜单做的)

if (jtf4.getSelectedIndex() 0) {

month = (Integer) jtf4.getSelectedItem();

}

int day = 0;

switch (month) {

//大月

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

day = 31;

break;

//小月

case 4:

case 6:

case 9:

case 11:

day = 30;

break;

case 2:

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

day = 29;

} else {

day = 28;

}

break;

}

//下面的是向组件里添加得到的值的。 上面才是关键

//jtf5.removeAllItems();

//jtf5.addItem("DD");

//for (int i = 1; i = day; i++) {

// jtf5.addItem(i);

}

}

java中一个月按周划分

lz 你好

这个还是比较好实现

具体代码如下(有详细的注释):

import java.util.*;

//月份划分类

public class MonthDivide {

private int year, month;//年份、月份

private int weekend; //周数(第几周)

private int leapYear[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //闰年每月天数

private int commonYear[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //平年每月天数

private int start, end;

    

    //输入

    public void inputData(){

     Scanner in = new Scanner(System.in);

    

     System.out.print ("输入年份:");

     year = in.nextInt();

     System.out.print ("输入月份:");

     month = in.nextInt();

     //System.out.print ("输入周数:");  

     //weekend = in.nextInt();

    }

    

    //判断闰年

    public boolean isLeapYear(int year){

    return (year%4 == 0  year%100 != 0) || (year%400 == 0);

    }

    

    //计算

    public void count(){

     int day, weekday, allDays=0;

     //分别表示当月天数、当月一号是星期几、1900.1.1到当前输入日期之间的天数

    

     day = isLeapYear(year)?leapYear[month]:commonYear[month];

     if(weekend  (day==28?4:5)){

     System.out.println ("周数越界了!");

     return;

     }

    

     //计算天数

     for(int i=1900; iyear; i++){

     allDays += isLeapYear(i)?366:365;

     }

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

     allDays += isLeapYear(year)?leapYear[i]:commonYear[i];

     }

     //计算星期几

     weekday = 1+allDays%7;

    

     //计算第weekend周的开始和结束

     if(weekend == 1){

     start = 1;

     end = 8 - weekday;

     }

     else{

     start = (weekend-2)*7 + (9-weekday);

     end = start + 6;

     if(end  day)

     end = day;

     }

    }

    

    //设置weekend周数

    public void setWeekend(int wk){

     weekend = wk;

    }

    

    //以下三个是获取属性

    public int getStart(){

     return start;

    }

    public int getEnd(){

     return end;

    }

    public int getWeekend(){

     return weekend;

    }

    

    //main

    public static void main(String[] args) {

     MonthDivide md = new MonthDivide();

        

        md.inputData();

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

     md.setWeekend(i);

     md.count();    

     System.out.print ("\n第"+md.getWeekend()+"周开始于"+md.getStart()+"号\t结束至"+md.getEnd()+"号");

     }

    }

}

运行结果:

希望能帮助你哈

java 中能够实现年月循环的代码

import java.util.Calendar;

public class MainTester {

public static void main(String[] args) {

Calendar calendar = Calendar.getInstance();

//设置为12月31日

calendar.set(Calendar.MONTH, 11);

calendar.set(Calendar.DAY_OF_MONTH, 31);

System.out.println("现在日期:" + calendar.getTime());

//再增加一天

calendar.add(Calendar.DAY_OF_MONTH, 1);

System.out.println("增加后的日期:" + calendar.getTime());

}

}

使用Calendar就可以实现,很简单,程序输出为:

现在日期:Tue Dec 31 11:50:55 CST 2013

增加后的日期:Wed Jan 01 11:50:55 CST 2014

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