java周转月的简单介绍
今天给各位分享java周转月的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java 如何获取 一个月 有多少周
- 2、编写一个Java程序,显示本年中给定月份的月历,按照周格式输出。
- 3、java 根据输入的年月计算出这个月有几周
- 4、java计算两个时间相隔月数,考虑闰年
- 5、java中一个月按周划分
- 6、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周转月的信息别忘了在本站进行查找喔。